Nie można wykonać skryptu: za mało pamięci, aby kontynuować wykonywanie programu

85

Mam plik sql o rozmiarze 123 MB, który muszę wykonać na moim lokalnym komputerze. Ale dostaję

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

wprowadź opis obrazu tutaj

Jak rozwiązać ten problem?

user960567
źródło
@marc_s Kiedy klikam Ctlr + E, natychmiast pokazuje ten błąd
user960567
1
Możliwy duplikat błędu podczas uruchamiania skryptu o
wielkości

Odpowiedzi:

123

użyj narzędzia wiersza poleceń SQLCMD, które znacznie zużywa mniej pamięci. To jest tak proste, jak:

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

Potrzebujesz ważnych poświadczeń, aby uzyskać dostęp do instancji SQL Server, a nawet uzyskać dostęp do bazy danych

Zaczerpnięte stąd .

Thangamani Palanisamy
źródło
23
Z pełnymi poświadczeniami, określając bazę danych i serwer: sqlcmd -S <YOUR-SERVER> -U <TWÓJ-UŻYTKOWNIK> -P <TWOJE- HASŁO> -d <TWOJA-BAZA-DANYCH> -i <TWÓJ-SQL-ŚCIEŻKA-PLIKU.sql >
a4bike
1
Pojawia się następujący problem: „Liczba wyrażeń wartości wierszy w instrukcji INSERT przekracza maksymalną dozwoloną liczbę 1000 wartości wierszy”.
Christian Fredh
3
dodaj -edla zaufanego połączenia
smurtagh
33

To może ci pomóc! Zobacz poniższe kroki.

sqlcmd -S nazwa-serwera -d nazwa-bazy danych -i skrypt.sql

  • Otwórz cmd.exe jako administrator.
  • Utwórz katalog Dokumenty.
  • Umieść plik skryptu SQL (script.sql) w folderze dokumentów.
  • Wpisz zapytanie z sqlcmd, nazwą-serwera, nazwą-bazy danych i nazwą-pliku-skryptu, tak jak powyżej podświetlone zapytanie lub poniżej ekranu wiersza poleceń.

wprowadź opis obrazu tutaj

Anil Singh
źródło
Możesz dodać nazwę użytkownika -sa i hasło -123, sqlcmd -S viaserver -U sa -P 123 -d TelstraDeployed -i SQLQuery1.sql
Anil Singh
11

Możesz także po prostu zwiększyć wartość Minimalna ilość pamięci na zapytanie we właściwościach serwera. Aby edytować to ustawienie, kliknij prawym przyciskiem myszy nazwę serwera i wybierz Właściwości> karta Pamięć.

Napotkałem ten błąd podczas próby wykonania 30MB skryptu SQL w SSMS 2012. Po zwiększeniu wartości z 1024MB do 2048MB udało mi się uruchomić skrypt.

(To ta sama odpowiedź, którą tu podałem )

dstetsenko
źródło
9

W przypadku uwierzytelniania systemu Windows użyj tego polecenia sql cmd

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

Uwaga: jeśli w ścieżce pliku sql jest spacja, użyj „(cudzysłowy)”

W przypadku uwierzytelniania programu SQL Server użyj tego polecenia sql cmd

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

-S TestSQLServer \ SQLEXPRESS: Tutaj określ nazwę serwera SQL

-U sa: nazwa użytkownika (w przypadku uwierzytelniania SQL Server)

-P sasa: hasło (w przypadku uwierzytelniania SQL Server)

-d AdventureWorks2018: Nazwa bazy danych tutaj

-i "d: \ document \ sql document \ script.sql": Ścieżka do pliku SQLFile

Manjunath Bilwar
źródło
5

Jeśli dobrze rozumiem Twój problem, próbujesz przywrócić (transakcyjny sql) xyz.sql - baza danych + schemat. Możesz wypróbować to polecenie, które zadziałało dla mnie:

SQLCMD -U sa -i xyz.sql
user3228486
źródło
4

Moja baza danych była większa niż 500 MB, więc użyłem następującego

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

Załadował wszystko, w tym SP

* Uwaga: uruchom cmd jako administrator

Zubeid Hendricks
źródło
2

Czasami, z powodu dużego rozmiaru skryptu i danych, napotykamy tego typu błąd. Serwer potrzebuje wystarczającej ilości pamięci, aby wykonać i podać wynik. Możemy po prostu zwiększyć rozmiar pamięci na zapytanie.

Wystarczy przejść do właściwości serwera sql> zakładka Pamięć (lewa strona)> Teraz ustaw maksymalny limit pamięci, który chcesz dodać.

Na górze znajduje się również opcja „Wyniki do tekstu”, która zajmuje mniej pamięci w porównaniu z opcją „Wyniki do siatki”, możemy również przejść do wyniku na tekst, aby zmniejszyć wykonanie pamięci.

Ankita shrivastava
źródło
2

Poniższy skrypt działa idealnie:

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

Objawy:

Podczas wykonywania skryptu odzyskiwania za pomocą narzędzia sqlcmd, komunikat „Sqlcmd: błąd: błąd składni w wierszu XYZ w pobliżu polecenia„ X ”w pliku„ nazwa_pliku.sql ”.” wystąpił błąd.

Przyczyna:

To jest ograniczenie narzędzia sqlcmd. Jeśli skrypt SQL zawiera znak dolara ($) w dowolnej formie, narzędzie nie może poprawnie wykonać skryptu, ponieważ domyślnie zastępuje wszystkie zmienne automatycznie.

Rozkład:

W celu wykonania skryptu ze znakiem dolara ($) w dowolnej postaci konieczne jest dodanie w linii poleceń parametru „-x”.

na przykład

Oryginał: sqlcmd -s nazwa_serwera -d nazwa_bazy_danych -E -ic: \ Temp \ Recovery_script.sql

Naprawiono: sqlcmd -s nazwa_serwera -d nazwa_bazy_danych -E -ic: \ Temp \ Recovery_script.sql -x

Nimesh khatri
źródło
Komentarz był bardzo pomocny. Dzięki
Pale Ale
1

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

  • Otwórz wiersz polecenia w uruchom jako administrator

  • wprowadź powyższe polecenie

"mamxxxxxmu" to nazwa komputera "sqlserverr" to nazwa serwera "sa" to nazwa użytkownika serwera "x1123" to hasło serwera "QLDB" to nazwa bazy danych "D: \ qldbscript.sql" to plik skryptu sql do wykonania w bazie danych

Mahmaood ali
źródło
1

Spróbuj tego kroku,

1) Otwórz PowerShell

2) Napisz to polecenie:

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

3) Naciśnij klawisz Return

:-)

wprowadź opis obrazu tutaj

daniele3004
źródło
1

Jeśli potrzebujesz połączyć się z LocalDB podczas programowania, możesz użyć:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
lukyer
źródło