Skript kann nicht ausgeführt werden: Nicht genügend Speicher, um die Ausführung des Programms fortzusetzen


84

Ich habe eine 123 MB SQL-Datei, die ich auf meinem lokalen PC ausführen muss. Aber ich bekomme

Cannot execute script: Insufficient memory to continue the execution of the program

Geben Sie hier die Bildbeschreibung ein

Wie kann man dieses Problem lösen?


@marc_s Wenn ich auf Ctlr + E klicke, wird dieser Fehler sofort
angezeigt

Antworten:


122

Verwenden Sie das Befehlszeilentool SQLCMD, das viel weniger Speicher benötigt. Es ist so einfach wie:

SQLCMD -d <database-name> -i filename.sql

Sie benötigen gültige Anmeldeinformationen, um auf Ihre SQL Server-Instanz oder sogar auf eine Datenbank zuzugreifen

Von hier genommen .


23
Mit vollständigen Anmeldeinformationen unter Angabe von Datenbank und Server: sqlcmd -S <YOUR-SERVER> -U <YOUR-USER> -P <YOUR-PASSWORD> -d <YOUR-DATABASE> -i <YOUR-SQL-FILE-PATH.sql >
a4bike

1
Ich erhalte das folgende Problem: "Die Anzahl der Zeilenwertausdrücke in der INSERT-Anweisung überschreitet die maximal zulässige Anzahl von 1000 Zeilenwerten."
Christian Fredh

3
-eFür vertrauenswürdige Verbindung hinzufügen
Smurtagh

32

Es könnte dir helfen! Bitte beachten Sie die folgenden Schritte.

sqlcmd -S Servername -d Datenbankname -i script.sql

  • Öffnen Sie cmd.exe als Administrator.
  • Dokumentverzeichnis erstellen.
  • Legen Sie Ihre SQL-Skriptdatei (script.sql) im Dokumentordner ab.
  • Geben Sie die Abfrage mit sqlcmd, Servername, Datenbankname und Skriptdateiname wie oben hervorgehobene Abfrage oder unter dem Befehlszeilenbildschirm ein.

Geben Sie hier die Bildbeschreibung ein


Sie können den Benutzernamen -sa und das Passwort -123, sqlcmd -S viaserver -U sa -P 123 -d TelstraDeployed -i SQLQuery1.sql
Anil Singh

11

Sie können auch einfach den Mindestspeicher pro Abfragewert in den Servereigenschaften erhöhen. Um diese Einstellung zu bearbeiten, klicken Sie mit der rechten Maustaste auf den Servernamen und wählen Sie Eigenschaften> Registerkarte Speicher.

Beim Versuch, ein 30-MB-SQL-Skript in SSMS 2012 auszuführen, ist dieser Fehler aufgetreten. Nachdem der Wert von 1024 MB auf 2048 MB erhöht wurde, konnte ich das Skript ausführen.

(Dies ist die gleiche Antwort, die ich hier gegeben habe )


9

Verwenden Sie für die Windows-Authentifizierung dieses SQL-Cmd

SQLCMD -S TestSQLServer\SQLEXPRESS  -d AdventureWorks2018 -i "d:\document\sql document\script.sql"

Hinweis: Wenn im SQL-Dateipfad Speicherplatz vorhanden ist, verwenden Sie "(Anführungszeichen)".

Verwenden Sie für die SQL Server-Authentifizierung dieses SQL-Cmd

SQLCMD -S TestSQLServer\SQLEXPRESS -U sa -P sasa  -d AdventureWorks2018 -i "d:\document\sql document\script.sql"

-S TestSQLServer \ SQLEXPRESS: Geben Sie hier den SQL Server-Namen an

-U sa: Benutzername (bei SQL Server-Authentifizierung)

-P sasa: Passwort (bei SQL Server-Authentifizierung)

-d AdventureWorks2018: Datenbankname kommt hierher

-i "d: \ document \ sql document \ script.sql": Dateipfad von SQLFile


5

Wenn ich Ihr Problem richtig verstehe, versuchen Sie, xyz.sql - Datenbank + Schema wiederherzustellen (SQL abwickeln). Sie können diesen Befehl ausprobieren, der für mich funktioniert hat:

SQLCMD -U sa -i xyz.sql

4

Meine Datenbank war größer als 500 MB, ich habe dann Folgendes verwendet

C:\Windows>sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -d DATABASE -i C:\FILE.sql

Es wurde alles geladen, einschließlich SPs

* NB: Führen Sie das cmd als Administrator aus


2

Aufgrund der großen Größe des Skripts und der Daten tritt diese Art von Fehler manchmal auf. Der Server benötigt ausreichend Speicher, um das Ergebnis auszuführen und zu liefern. Wir können einfach die Speichergröße pro Abfrage erhöhen.

Sie müssen nur zu den Eigenschaften des SQL-Servers gehen> Registerkarte Speicher (linke Seite)> Legen Sie nun das maximale Speicherlimit fest, das Sie hinzufügen möchten.

Außerdem gibt es oben die Option "Ergebnisse zu Text", die im Vergleich zur Option "Ergebnisse zu Raster" weniger Speicher benötigt. Wir können auch "Ergebnis zu Text" wählen, um weniger Speicher auszuführen.


2

Das folgende Skript funktioniert perfekt:

sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql -x

Symptome:

Wenn Sie ein Wiederherstellungsskript mit dem Dienstprogramm sqlcmd ausführen, wird der Befehl 'Sqlcmd: Error: Syntax in Zeile XYZ neben dem Befehl' X 'in der Datei' file_name.sql 'angezeigt.' Fehler ist aufgetreten.

Ursache:

Dies ist eine Einschränkung des Dienstprogramms sqlcmd. Wenn das SQL-Skript in irgendeiner Form ein Dollarzeichen ($) enthält, kann das Dienstprogramm das Skript nicht ordnungsgemäß ausführen, da standardmäßig alle Variablen automatisch ersetzt werden.

Auflösung:

Um ein Skript mit einem Dollarzeichen ($) in irgendeiner Form auszuführen, muss der Befehlszeile der Parameter "-x" hinzugefügt werden.

z.B

Original: sqlcmd -s Servername -d Datenbankname -E -ic: \ Temp \ Recovery_script.sql

Behoben : sqlcmd -s Servername -d Datenbankname -E -ic: \ Temp \ Recovery_script.sql -x


$ comment war sehr hilfreich. Vielen Dank
Pale Ale

1

sqlcmd -S mamxxxxxmu \ sqlserverr -U sa -P x1123 -d QLDB -i D: \ qldbscript.sql

  • Öffnen Sie die Eingabeaufforderung, um als Administrator ausgeführt zu werden

  • Geben Sie den obigen Befehl ein

"mamxxxxxmu" ist der Computername "sqlserverr" ist der Servername "sa" ist der Benutzername des Servers "x1123" ist das Passwort des Servers "QLDB" ist der Datenbankname "D: \ qldbscript.sql" ist die SQL-Skriptdatei, die in der Datenbank ausgeführt werden soll


1

Versuchen Sie diesen Schritt,

1) Öffnen Sie PowerShell

2) Schreiben Sie diesen Befehl:

sqlcmd -S PCNAME\SQLEXPRESS -U user -P password -d databanse_name -i C:\script.sql

3) Drücken Sie die Eingabetaste

:-)

Geben Sie hier die Bildbeschreibung ein


1

Wenn Sie während der Entwicklung eine Verbindung zu LocalDB herstellen müssen, können Sie Folgendes verwenden:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.