2013-06-24 24 views
16

Xin chào tất cả mọi người tôi đang cố gắng để tự tạo một người dùng mới trong bảng của tôi nhưng không thể tạo ra một "UniqueIdentifier" loại mà không cần ném một ngoại lệ ...Làm thế nào để tạo và chèn thủ công một bộ định danh duy nhất trong máy chủ sql?

Dưới đây là ví dụ của tôi:

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 ngoại lệ -> Msg 8169, Cấp 16, Tiểu bang 2, Dòng 4 Không thể chuyển đổi chuỗi ký tự thành uniqueidentifier.

tôi sử dụng phương pháp NEWID() nhưng nó không hoạt động ...

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

+0

Điều đó sẽ làm việc tốt - http://sqlfiddle.com/#!6/699d6/1 –

+1

Loại cột 'UserID' của bạn trong bảng là gì? Bạn có chắc một số cột khác không phải là loại 'UniqueIdentifier' mà bạn đang chèn chuỗi không? ApplicationID có thể? –

+3

Lỗi này có thể là một cột khác, tôi đoán là ApplicationID, kiểu dữ liệu của ApplicationID là gì? –

Trả lời

27

ApplicationId phải loại UniqueIdentifier. mã của bạn hoạt động tốt nếu bạn làm:

DECLARE @TTEST TABLE 
(
    TEST UNIQUEIDENTIFIER 
) 

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

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

SELECT * FROM @TTEST 

Vì vậy, tôi sẽ nói nó là an toàn để giả định rằng ApplicationId không phải là kiểu dữ liệu chính xác.

3

Vui lòng kiểm tra cột ApplicationId datatype trong bảng aspnet_Users, ApplicationId cột datatype phải là uniqueidentifier.

* Thứ tự tham số của bạn được chuyển sai, Tham số @id phải được chuyển làm đối số đầu tiên, nhưng trong tập lệnh của bạn, nó được đặt trong đối số thứ hai.. *

Vì vậy, lỗi được nâng lên ..

hãy refere mẫu kịch bản:

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

insert into #temp1 values(@id) 

Select * from #temp1 

Drop Table #temp1 
Các vấn đề liên quan