2013-06-24 13 views
16

Merhaba elle benim tablosunda yeni bir kullanıcı oluşturmak için çalışıyorum ama bir istisna attı olmadan imkansız bir "UniqueIdentifier" türü üretmek için herkes ... İşte SQL Server'a benzersiz bir belirleyici nasıl oluşturulur ve el ile eklenir?

benim örnektir:

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 istisna -> Msg 8169, Düzey 16, Durum 2, Satır 4 Bir karakter dizesini benzersiz belirleyiciye dönüştüremedi.

Ben NEWID() yöntemini kullanın ama işe değil

...

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

+0

- http://sqlfiddle.com/#!6/699d6/1 –

+1

Ne tür Tablodaki "UserID" sütununuz nedir? Başka bir sütunun dizeleri eklediğiniz "UniqueIdentifier" türü olmadığından emin misiniz? ApplicationID belki? –

+3

Hata muhtemelen başka bir sütun için, benim tahminim ApplicationID, ApplicationID veri türü nedir? –

cevap

27

applicationID tip UniqueIdentifier olmalıdır. Kodunuz bunu yaparsanız çalışıyor:

DECLARE @TTEST TABLE 
(
    TEST UNIQUEIDENTIFIER 
) 

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

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

SELECT * FROM @TTEST 

Dolayısıyla ben ApplicationId doğru veri türünde olmadığını varsaymak güvenli olduğunu söyleyebilirim.

3

Lütfen Tablo aspnet_Users sütun applicationID veri türü kontrol applicationID kolon veri türü Uniqueidentifier olmalıdır.

* Sizin parametre sırası yanlış, Parametre @id ilk argüman olarak geçirilmesi gerekirken ancak komut ikinci argüman yerleştirilir geçirilir .. *

Yani hata ortaya çıkar

..

örnek komut refere edin: iyi çalışması gerekir

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

insert into #temp1 values(@id) 

Select * from #temp1 

Drop Table #temp1