web-dev-qa-db-ja.com

SQL Serverでuniqueidentifierを生成して手動で挿入する方法

テーブルに新しいユーザーを手動で作成しようとしていますが、例外をスローせずに「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

例外をスロー->メッセージ8169、レベル16、状態2、行4文字列をuniqueidentifierに変換できませんでした。

NEWID()メソッドを使用しますが、機能しません...

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

23
Mehdi Bugnard

ApplicationIdはUniqueIdentifierタイプでなければなりません。次の場合、コードは正常に機能します。

DECLARE @TTEST TABLE
(
  TEST UNIQUEIDENTIFIER
)

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

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

SELECT * FROM @TTEST

したがって、ApplicationIdが正しいデータ型ではないと想定しても安全だと思います。

33
Darren

テーブルaspnet_UsersのApplicationId列のデータ型を確認してください。ApplicationId列のデータ型はuniqueidentifierである必要があります。

* パラメーターの順序が誤って渡された場合、パラメーター@idは最初の引数として渡される必要がありますが、スクリプトでは2番目の引数に配置されます。*

したがって、エラーが発生します。

サンプルスクリプトを参照してください。

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

insert into #temp1 values(@id)

Select * from #temp1

Drop Table #temp1
4
bgs