J'ai une nvarchar(50)
colonne dans un SQL Server 2000 table définie comme suit:Pourquoi ce SQL CAST ne fonctionnera-t-il pas?
TaskID nvarchar(50) NULL
J'ai besoin pour remplir cette colonne avec l'aide de la fonction NEWID()
de GUID SQL aléatoire (je ne peux pas changer le type de colonne à uniqueidentifier
) .
J'ai essayé ceci:
UPDATE TaskData SET TaskID = CAST(NEWID() AS nvarchar)
mais j'obtenu l'erreur suivante:
Msg 8115, Level 16, State 2, Line 1 Arithmetic overflow error converting expression to data type nvarchar.
J'ai aussi essayé:
UPDATE TaskData SET TaskID = CAST(NEWID() AS nvarchar(50))
mais a obtenu cette erreur:
Msg 8152, Level 16, State 6, Line 1 String or binary data would be truncated.
Je ne comprends pas pourquoi cela ne fonctionne pas, mais cela ne:
DECLARE @TaskID nvarchar(50)
SET @TaskID = CAST(NEW() AS nvarchar(50))
J'ai aussi essayé CONVERT(nvarchar, NEWID())
et CONVERT(nvarchar(50), NEWID())
mais ai eu les mêmes erreurs.
Mise à jour:
Ok, ma vue va, la taille de la colonne sur la table est nvarchar(32)
pas 50. excuses Deepest pour le timewasting et merci pour toutes les réponses.
Avez-vous et des déclencheurs sur cette table? Vous pouvez recevoir des messages d'erreur à partir du déclencheur. sp_helpTrigger 'TaskData' –
@GMastros - non, le problème était PEBKAC/PICNIC plus communément connu sous le nom de code 'ID 10T'. – Kev