2017-05-17 6 views
3

J'essaie d'exécuter une requête, après avoir lu le contenu d'un fichier de script SQL, l'avoir assigné à une variable puis exécuté le contenu. Ensuite, je reçois cette erreur en disant Could not find stored procedure 'ÿþ'. S'il vous plaît, aidez-moi à comprendre le problème. Je vous remercie."Impossible de trouver la procédure stockée 'ÿþ'" erreur

Info:

SQL Server 2014

SSMS Version - 12.0.4100.1

+2

Le problème est que votre fichier de script SQL est codé en UTF-16 et la partie de votre application qui le lit le décode en tant que Windows-1252. – Tomalak

+0

Oh je vois. Que puis-je faire pour surmonter cela? – Curiousity

Répondre

8

ÿþ est une façon d'interpréter les deux octets du l'UTF-16 byte order mark, qui est \ xFF et \ xFE. Vous obtenez ces deux lettres lorsque vous lisez un fichier qui a été enregistré dans le codage UTF-16 avec un outil qui n'est pas au courant ou, plus probablement, n'a pas été configuré pour utiliser Unicode. Par exemple, lorsque vous modifiez un fichier texte avec le Bloc-notes de Windows et sélectionnez "Unicode" comme codage de fichier lorsque vous l'enregistrez, le Bloc-notes utilisera UTF-16 pour enregistrer le fichier et le marquer avec les deux octets début. Si quelque chose que vous utilisez pour lire le fichier n'est pas conscient du fait que le fichier est Unicode, alors il utilisera le codage par octet par défaut de votre ordinateur pour décoder ce fichier texte.

Maintenant, si ce codage par défaut se trouve être Windows-1252, comme dans votre cas, alors ÿþ est ce que vous obtenez, parce qu'il \ xFF est ÿ et \ XFE est þ. Par conséquent, lorsqu'il est présenté avec ÿþ, SQL Server pense qu'il doit être le nom d'une procédure stockée, car les procédures stockées sont les seules instructions que vous pouvez exécuter en mentionnant simplement leur nom. Et il rapporte consciencieusement qu'il ne peut pas trouver une procédure de ce nom.

+0

Merci pour l'explication. Maintenant, je comprends pourquoi ça se passe. Est-il possible de passer ces caractères? – Curiousity

+1

Vous ne voulez absolument pas ignorer ces caractères. Ils sont importants. – Tomalak

+1

J'ai expliqué tout ce que vous devez savoir pour arriver à la bonne conclusion sur ce qu'il faut faire. Piece le puzzle ensemble, ce n'est pas difficile. :) – Tomalak