Wir aktualisieren unsere Testumgebung mit einem neuen Server und einer aktualisierten Version von Microsoft SQL Server und sind auf ein Problem gestoßen.
Auf dem neuen Server wird unser alter Code "Vorgang ist nicht zulässig, wenn das Objekt geschlossen wird", wenn einige gespeicherte Prozeduren ausgeführt werden. Diese Nachricht wurde nie auf dem alten Server angezeigt. Wenn wir es gefunden haben, kann das Problem durch Hinzufügen SET NOCOUNT ON;
zur gespeicherten Prozedur behoben werden.
Ich habe mir die Standardeinstellungen in der Datenbank angesehen und festgestellt, dass keine anderen Einstellungen (SQL Server 2008 im Vergleich zu SQL Server 2014) in Bezug auf die Standardeinstellungen vorgenommen wurden.
Auf welche Einstellung sollte ich SET NOCOUNT ON
achten , um dies global zu lösen, ohne tausend gespeicherte Procs hinzufügen zu müssen?
quelle
SET NOCOUNT ON;
.SET NOCOUNT ON;
am Anfang der gespeicherten Prozedur (nachBEGIN
) anzuhängen . Die Anzahl der gespeicherten Prozeduren sollte eigentlich kein Problem sein.BEGIN
- es ist nett, aber nicht erforderlich.Antworten:
Die SQL Server-Konfiguration verfügt über eine entsprechend aufgerufene Option
user options
, die mithilfe dersp_configure
gespeicherten Systemprozedur festgelegt werden kann. Ich habe einen Blogbeitrag über SQL Server Science geschrieben, in dem gezeigt wird, wie die Benutzeroptionen überprüft und festgelegt werden.Kurz gesagt, Sie können den "Konfigurationswert" wie folgt vom alten Server abrufen:
Stellen Sie dann den neuen Server so ein, dass er die gleichen Optionen verwendet:
(Ersetzen Sie den <config value> durch den Wert vom alten Server).
quelle
SET NOCOUNT ON
das Problem behoben ist, können Sie es durch Festlegen der Benutzeroptionen auf 512 beheben.