2014-01-20 5 views
6

Ich versuche, ein großes SQL-Skript auszuführen, das etwa 1000000 einfache UPDATE Abfragen enthält.Nicht genügend Speicher Ausnahme in SQL Server 2012

Die Gesamtgröße dieser Skriptdatei beträgt ca. 100 MB.

Wenn ich dieses Skript ausführen, erhalte ich eine Ausnahmebedingung.

Wenn ich die Datei in Stücke von 10 MB teilen, kann ich jede von ihnen ausführen.

Allerdings möchte ich aus Bequemlichkeit nur ein Skript haben, das ich gleichzeitig ausführen kann. Gibt es irgendeine Aussage, die ich vorstellen kann, so dass SQL Server freigegebenen Speicher nach dem Ausführen jeder Abfrage freigibt, damit ich dieses große Skript auf einmal ausführen kann?

Antwort

7

Wenn Sie nicht bereits getan haben, legen Sie eine GO alle tausend Aussagen oder so. Andernfalls wird die gesamte Datei eine große Menge sein. SQL Server berechnet einen einzelnen Ausführungsplan für einen Stapel, der Sie möglicherweise zu Ressourcenbeschränkungen treibt.

Sie könnten zu einem anderen Typ von Ressourcenproblem führen, wenn Sie die gesamte Datei in derselben Transaktion ausführen. Je größer die Transaktion, desto mehr Speicherplatz benötigt Ihre TX-Protokolldatei, um die Verarbeitung Ihrer Datei abzuschließen.

+0

Das Einfügen von GO hat den Trick für mich gemacht. Danke – David

3

AKTUALISIERT: Öffnen Sie das Fenster Eingabeaufforderung (run + cmd) und führen Sie die folgenden Schritte aus:

sqlcmd -S YOURSQLSERVER\INSTANCENAME -i c:\your_script_file.sql -o c:\your_log_file.log 
+2

Das löst mein Problem nicht. Mit diesem Befehl stoße ich immer noch auf das Problem mit dem nicht vorhandenen Speicher. – David

1

Ich habe festgestellt, dass in SSMS 2012 ein Speicherleck zu sein scheint, das mit dem Ergebnisfenster in Zusammenhang zu stehen scheint. Versuchen Sie, set nocount on an der Spitze Ihres Skripts zu setzen, um zu verhindern, dass der Ergebnisbereich mit "1 Zeile (n) betroffenen" Nachrichten gefüllt wird. Oder gibt es eine Möglichkeit, Ihre Update-Anweisungen als eine Anweisung zu schreiben, damit Sie nicht ständig vom Server und vom Client hin- und herspringen?

+1

Danke für Ihre Freigabe. Ich habe das versucht, aber das war nicht das Problem für mich. Jedenfalls werde ich das im Hinterkopf behalten, wenn ich auf ähnliche Probleme stoße. – David