Как сгенерировать и вручную вставить уникальный идентификатор в sql-сервер?

Я пытаюсь вручную создать нового пользователя в своей таблице, но невозможно сгенерировать тип "UniqueIdentifier" без исключения...

Вот мой пример:

DECLARE @id uniqueidentifier
SET @id = NEWID()

INSERT INTO [dbo].[aspnet_Users]
           ([ApplicationId]
           ,[UserId]
           ,[UserName]
           ,[LoweredUserName]
           ,[LastName]
           ,[FirstName]
           ,[IsAnonymous]
           ,[LastActivityDate]
           ,[Culture])
     VALUES
           ('ARMS'
           ,@id
           ,'Admin'
           ,'admin'
           ,'lastname'
           ,'firstname'
           ,0
           ,'2013-01-01 00:00:00'
           ,'en')
GO

Исключение Trow -> Сообщение 8169, уровень 16, состояние 2, строка 4 Не удалось преобразовать строку символов в uniqueidentifier.

Я использую метод NEWID(), но он не работает...

http://www.dailycoding.com/Posts/generate_new_guid_uniqueidentifier_in_sql_server.aspx

Ответы

Ответ 1

ApplicationId должен иметь тип UniqueIdentifier. Ваш код отлично работает, если вы это сделаете:

DECLARE @TTEST TABLE
(
  TEST UNIQUEIDENTIFIER
)

DECLARE @UNIQUEX UNIQUEIDENTIFIER
SET @UNIQUEX = NEWID();

INSERT INTO @TTEST
(TEST)
VALUES
(@UNIQUEX);

SELECT * FROM @TTEST

Поэтому я бы сказал, что можно с уверенностью предположить, что ApplicationId не является правильным типом данных.

Ответ 2

Пожалуйста, проверьте тип столбца ApplicationId в таблице aspnet_Users, тип данных столбца ApplicationId должен быть уникальным идентификатором.

* Ваш заказ параметра передан неправильно, Параметр @id должен передаваться как первый аргумент, но в вашем script он помещается во второй аргумент.. *

Так возникает ошибка.

Пожалуйста, обратитесь к образцу script:

DECLARE @id uniqueidentifier
SET @id = NEWID()
Create Table #temp1(AppId uniqueidentifier)

insert into #temp1 values(@id)

Select * from #temp1

Drop Table #temp1