2017-05-17 3 views
3

Ich versuche eine Abfrage auszuführen, nachdem ich den Inhalt einer SQL-Skriptdatei gelesen, einer Variablen zugewiesen und dann den Inhalt ausgeführt habe. Dann bekomme ich den Fehler Could not find stored procedure 'ÿþ'. Bitte helfen Sie mir, das Problem zu verstehen. Vielen Dank."Gespeicherte Prozedur konnte nicht gefunden werden" ÿþ '"Fehler

Info:

SQL Server 2014

SSMS Version - 12.0.4100.1

+2

Das Problem ist, dass Ihre SQL-Skriptdatei als UTF-16 codiert ist und der Teil Ihrer Anwendung, der es liest, dekodiert es als Windows-1252. – Tomalak

+0

Oh ich verstehe. Was kann ich tun, um darüber hinwegzukommen? – Curiousity

Antwort

8

ÿþ ist eine Möglichkeit, die beiden Bytes der dem UTF-16 byte order mark, die zu interpretieren ist \ xFF und \ xFE.

Sie erhalten diese zwei Buchstaben, wenn Sie eine Datei lesen, die in der UTF-16-Kodierung mit einem Werkzeug gespeichert wurde, das nichts von der Verwendung von Unicode versteht - oder wahrscheinlich nicht verwendet wurde.

Zum Beispiel, wenn Sie eine Textdatei mit Windows Editor bearbeiten und wählen Sie "Unicode" als Dateicodierung, wenn Sie es speichern, wird Notepad UTF-16 verwenden, um die Datei zu speichern und wird mit den genannten zwei Bytes an der markiert Anfang.

Wenn die Datei, die Sie zum Lesen der Datei verwenden, sich nicht der Tatsache bewusst ist, dass die Datei Unicode ist, verwendet sie die Standard-Bytecodierung Ihres Computers, um diese Textdatei zu dekodieren.

Nun, wenn das Standardcodierung Windows-1252 zu sein wie in Ihrem Fall passiert, dann ist ÿþ, was man bekommt, weil es \ xFF ÿ ist und \ xFE ist þ.

Folglich, wenn SQL Server mit ÿþ dargestellt wird, denkt es, dass es der Name einer gespeicherten Prozedur sein muss, da gespeicherte Prozeduren die einzigen Anweisungen sind, die Sie ausführen können, indem Sie nur ihren Name angeben. Und es meldet pflichtgemäß, dass es kein Verfahren dieses Namens finden kann.

+0

Vielen Dank für die Erklärung. Jetzt verstehe ich, warum es passiert. Gibt es eine Möglichkeit, diese Zeichen zu überspringen? – Curiousity

+1

Sie wollen diese Zeichen absolut nicht überspringen. Sie sind wichtig. – Tomalak

+1

Ich habe alles erklärt, was du wissen musst, um zu dem richtigen Schluss zu kommen, was zu tun ist. Teile das Puzzle zusammen, es ist nicht schwer. :) – Tomalak

Verwandte Themen