I' m versucht, die folgende ziemlich einfache Abfrage in SQL Server Management Studio ausführen:
SELECT TOP 1000 *
FROM
master.sys.procedures as procs
left join
master.sys.parameters as params on procs.object_id = params.object_id
Dies scheint völlig korrekt zu sein, aber ich erhalte immer wieder die folgende Fehlermeldung:
Msg 102, Level 15, State 1, Line 6
Falsche Syntax bei ''.
Es funktioniert, wenn ich die Verknüpfung herausnehme und nur eine einfache Auswahl treffe:
SELECT TOP 1000 *
FROM
master.sys.procedures as procs
Aber ich brauche die Verknüpfung, um zu funktionieren. Ich habe nicht einmal die Zeichenfolge '' in dieser Abfrage, also kann ich nicht herausfinden, was sie nicht mag.
Solche unerwarteten Probleme können auftreten, wenn Sie den Code von einer Webseite oder einer E-Mail kopieren und der Text nicht druckbare Zeichen wie einzelne CR- oder LF-Zeichen und nicht umbrechbare Leerzeichen enthält.
Panagiotis Kanavos hat recht, manchmal kann T-SQL durch Kopieren und Einfügen unerwünschte Zeichen erscheinen lassen...
Ich habe schließlich einen einfachen und schnellen Weg gefunden (nur Notepad++ benötigt), um zu erkennen, welches Zeichen falsch ist, ohne dass die gesamte Anweisung manuell neu geschrieben werden muss: Es ist nicht notwendig, eine Datei auf der Festplatte zu speichern.
Es ist ziemlich schnell, in Notepad++:
Sie sollten die falschen Zeichen leicht finden
Der Fehler lag bei mir darin, dass ich die SQL-Anweisung aus einer Textdatei gelesen habe, und die Textdatei wurde im Format UTF-8 mit BOM (Byte Order Mark) gespeichert.
Um das Problem zu lösen, öffnete ich die Datei in Notepad++ und wählte unter Kodierung UTF-8. Alternativ können Sie auch die ersten drei Bytes der Datei mit einem Hex-Editor entfernen.