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


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 .


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


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 )


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


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

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


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.


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


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


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


1

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

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.