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?

user960567
quelle
@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 .

Thangamani Palanisamy
quelle
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

Anil Singh
quelle
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 )

dstetsenko
quelle
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

Manjunath Bilwar
quelle
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
user3228486
quelle
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

Zubeid Hendricks
quelle
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.

Ankita shrivastava
quelle
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

Nimesh Khatri
quelle
$ 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

Mahmaood ali
quelle
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

daniele3004
quelle
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
lukyer
quelle