The identity column must be of data type int, bigint, smallint, tinyint, decimal, or numeric

azure, c#, database, sql, visual-studio

Solution

`IDENTITY` cannot be used with `GUID`

Use `NEWID` instead.

CREATE TABLE [dbo].[Organization]
(
    [Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED DEFAULT NEWID(), 
    [Name] NVARCHAR(100) NOT NULL, 
    [CreationDate] DATETIME NOT NULL DEFAULT GetDate()
)

Problem

I have created a database project in Visual Studio 2012, with target platform set to 'Windows Azure SQL Database'. I added a table like: ``` CREATE TABLE [dbo].[Organization] ( [Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED IDENTITY, [Name] NVARCHAR(100) NOT NULL, [CreationDate] DATETIME NOT NULL DEFAULT GetDate() ) GO CREATE CLUSTERED INDEX [IX_Organization_CreationDate] ON [dbo].[Organization] ([CreationDate]) ``` But it keeps complaining about: ``` Error 1 SQL71518: The identity column '[dbo].[Organization].[Id]' must be of data type int, bigint, smallint, tinyint, decimal, or numeric with a scale of 0, and the column must not be nullable. C:\Projects\Gastrology\MGP\trunk\Sources\Cfg.Mgp.Infrastructure.Database\Organization.sql 3 2 Cfg.Mgp.Infrastructure.Database ``` Anyone knows why I can't create a primary key of type guid? What Am I doing wrong? Thanks!

Original source