Frage

Ich betrachte einen Fehler von einem unserer Web-Anwendungen, und es wurde eine gespeicherte Prozedur aufrufen, die für die Aktualisierung eines Datensatzes in der Datenbank verantwortlich ist.

Diese gespeicherte Prozedur ist seit Wochen ohne Probleme gearbeitet. Einen Tag begann es Fehler zu werfen, während des Debuggen wir die Ursache gefunden innerhalb der gespeicherten Prozedur zu sein.

Es hatte im Grunde eine Aussage wie diese

Begin
  // Do Stuff

  Set
End

So ist die SET eigentlich nie etwas gesetzt. Aus irgendeinem Grunde läuft dies auf unserem Server in völlig in Ordnung, und lief bis heute bereits auf einem Client-Server in Ordnung, wenn es beschlossen beschwert zu starten. (Falsche Syntaxfehler)

Gibt es eine Art von SQL Server-Einstellung, die diese plötzliche Änderung im Verhalten verursachen würde?

Klarstellung - Die SET hat in den Verfahren immer. Und der Betrieb ein SET selbst oder als einzige Anweisung in einer gespeicherten Prozedur in der Tat für mich arbeiten. Das ist das Problem, es sollte nicht Arbeit. So ist es etwas, das es würde dazu führen, zu arbeiten, wenn es versagt werden sollte?

War es hilfreich?

Lösung

Ein Verfahren mit einem SET wie das normalerweise nicht kompilieren, selbst wenn der SET kann nicht erreicht werden:

alter procedure dbo.testproc as
    begin
    return 1;
    set
    end

Incorrect syntax near the keyword 'SET'.

Da das Alter nicht, ich kann nicht sehen, wie das Verfahren in Ihrer Datenbank in erster Linie könnte am Ende?

Vielleicht waren Sie im Kompatibilitätsmodus für SQL Server 2000 ausgeführt wird (die dies noch erlaubt.) Ändern der Kompatibilität MDOE auf SQL Server 2005 oder höher würde dann das Verfahren brechen.

Andere Tipps

Ausführen „SET“, von selbst, wird ein Fehler generiert. Ich wollte ursprünglich vor, dass Sie haben Code könnte Verzweigung (IfS, Returns, GOTOs, etc.), die die Linie verursacht nie erreicht werden ... aber ich finde, dass ich nicht eine gespeicherte Prozedur, die dies als Stand enthält erstellen allein Aussage.

Wenn Sie die Prozedur Skript aus und versuchen, es neu zu erstellen (mit einem anderen Namen), kann es angelegt werden?

könnte sich lohnen das Skript veröffentlichen, oder so viel davon wie Ihr bequem machen öffentlich sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top