web-dev-qa-db-fra.com

Comment générer et insérer manuellement un identifiant unique dans le serveur SQL?

J'essaie de créer manuellement un nouvel utilisateur dans ma table mais impossible de générer un type "UniqueIdentifier" sans levée d'exception ...

Voici mon exemple:

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 Trow -> Msg 8169, niveau 16, état 2, ligne 4 Impossible de convertir une chaîne de caractères en identificateur unique.

J'utilise la méthode NEWID () mais ça ne marche pas ...

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

23
Mehdi Bugnard

ApplicationId doit être de type UniqueIdentifier. Votre code fonctionne bien si vous le faites:

DECLARE @TTEST TABLE
(
  TEST UNIQUEIDENTIFIER
)

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

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

SELECT * FROM @TTEST

Par conséquent, je dirais qu'il est prudent de supposer que ApplicationId n'est pas le type de données correct.

33
Darren

Veuillez vérifier le type de données de la colonne ApplicationId dans le tableau aspnet_Users, le type de données de la colonne ApplicationId doit être uniqueidentifier.

* L'ordre des paramètres est mal passé, le paramètre @id doit être passé comme premier argument, mais dans votre script, il est placé dans le deuxième argument. . *

Donc, l'erreur est soulevée ..

Veuillez consulter un exemple de script:

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

insert into #temp1 values(@id)

Select * from #temp1

Drop Table #temp1
4
bgs