SQL Server: Warum sollte ich am Ende eines gespeicherten Prozedurnamens "; 1" hinzufügen?
i ist heute auf ein Kompatibilitätsproblem gestoßen, als ein Kunde von Windows XP auf Windows 7 aktualisiert hat.
The (12 Jahre alter Code) ruft eine gespeicherte Prozedur auf dem SQL Server mit dem Namen @ au
ai_nextid
Außer dass, wenn es die gespeicherte Prozedur aufruft, es den Namen verwendet:
ai_nextid;1
Ja, mit einem ";1
"angehängt. Anscheinend ist der SQL Server-Treiber unter Windows 95, Windows 2000, Windows XP und möglicherweise Windows Vista in Ordnung mit diesemspeziel Suffix hinzugefügt. Der SQL Server-ODBC-Treiber in Windows 7 unterscheidet sich jedoch und verursacht den Fehler:
Allgemeiner SQL-Fehler.
[Microsoft] [ODBC SQL-Treiber] [SQL Server] Die gespeicherte Prozedur 'ai_nextid; 1' konnte nicht gefunden werden.
[Microsoft] [ODBC SQL-Treiber] [SQL Server] Indikatorvariable erforderlich, aber nicht angegeben '.
it nativem Fehl 2812.
Dies wirft 4 Fragen auf:
Warum wurden wir angehängt;1
bis zum Ende des gespeicherten Prozedurnamens? (was leistet es) Warum hat der SQL Server-Treiber das ignoriert?Warum wurde in Windows 7 eine grundlegende Änderung vorgenommen?wird die Änderung der Breaking-Kompatibilität dokumentiert?Die letzten beiden Fragen wären wahrscheinlich die gleichen, denn wenn sie es dokumentieren, würden sie es rechtfertigen.