2013-06-24 5 views
16

Привет всем Я пытаюсь вручную создать новый пользователь в моей таблице, но невозможно сформировать тип «UniqueIdentifier» без кинул исключение ...Как сгенерировать и вручную вставить уникальный идентификатор в sql-сервере?

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

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 

Троу exception -> Msg 8169, Level 16, State 2, Line 4 Не удалось преобразовать символьную строку в uniqueidentifier.

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

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

+0

Это должно работать нормально - http://sqlfiddle.com/#!6/699d6/1 –

+1

Какой тип ваш столбец «UserID» в таблице? Вы уверены, что какой-то другой столбец не является типом 'UniqueIdentifier', где вы вставляете строки? Возможно, ApplicationID? –

+3

Ошибка, вероятно, для другого столбца, я предполагаю, что ApplicationID, какой тип данных ApplicationID? –

ответ

27

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

DECLARE @TTEST TABLE 
(
    TEST UNIQUEIDENTIFIER 
) 

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

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

SELECT * FROM @TTEST 

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

3

Просьба проверить тип столбца ApplicationId datatype в таблице aspnet_Users, тип данных столбца ApplicationId должен быть uniqueidentifier.

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

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

Пожалуйста refere пример сценария:

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

insert into #temp1 values(@id) 

Select * from #temp1 

Drop Table #temp1