Bonjour,
J'ai converti une base de données SQL Server 2005 non unicode vers une base Sql Server 2008 unicode. Pour cela, j'ai généré un script de création à partir de la première base, puis je l'ai modifé pour adapter les types de données et les chaînes de caractères. Enfin, j'ai fais un import de données qui a réussi sans problème.
Une procédure est utilisée dans le code source d'une application écrite en delphi et elle déclenche une erreur. Ou plutôt un avertissement parce que le code s'exécute ensuite sans erreur.
La procédure fait un simple select sur une table:
La colonne de la table est du même type et de même taille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE PROCEDURE [dbo].[user_name]( @result nvarchar(40) output ) AS SELECT top 1 @result=user_nom FROM users set @result = coalesce(@result, N'')
A l'exécution, l'avertissement lancé par SQL Server est:
Dans le code, c'est une chaîne de longueur indéfinie qui est utilisée pur récupérer la valeur renvoyée.---------------------------
Warning
---------------------------
ExecFunc : [user_name]
The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 1 (""): Data type 0xE7 has an invalid data length or metadata length.
---------------------------
OK
---------------------------
Je ne vois pas d'où le problème peut venir, si ce n'est que si je change le type du paramètre en ntext, l'erreur ne se produit plus.
Je pourrais laisser ntext mais j'aimerais bien quand même comprendre le pourquoi de ce "warning".
Papy
Oups ... apparemment, c'est plus une exception récupérée par le code appelant. J'investigue et je reviens .... Mais quoi qu'il en soit, l'erreur est bien renvoyé par l'appel de la procédure
Partager