Невозможно выполнить сценарий: недостаточно памяти для продолжения выполнения программы


88

У меня есть файл sql размером 123 МБ, который мне нужно выполнить на моем локальном ПК. Но я получаю

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

введите описание изображения здесь

Как решить эту проблему?


@marc_s Когда я нажимаю Ctrl + E, сразу появляется эта ошибка
user960567

Ответы:


126

используйте инструмент командной строки SQLCMD, который намного меньше использует память. Это очень просто:

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

Вам нужны действительные учетные данные для доступа к вашему экземпляру SQL Server или даже для доступа к базе данных.

Взято отсюда .


26
С полными учетными данными, указав базу данных и сервер: sqlcmd -S <ВАШ-СЕРВЕР> -U <ВАШ-ПОЛЬЗОВАТЕЛЬ> -P <ВАШ-ПАРОЛЬ> -d <ВАША- БАЗА ДАННЫХ> -i <ВАШ-SQL-FILE-PATH.sql >
a4bike 03

1
У меня возникает такая проблема: «Количество выражений значений строк в операторе INSERT превышает максимально допустимое количество в 1000 значений строк».
Кристиан Фред

3
добавить -eдля доверенного соединения
smurtagh

33

Это может вам помочь! См. Шаги ниже.

sqlcmd -S имя-сервера -d имя-базы данных -i script.sql

  • Откройте cmd.exe от имени администратора.
  • Создайте каталог документов.
  • Поместите файл сценария SQL (script.sql) в папку с документами.
  • Введите запрос с sqlcmd, именем-сервером, именем-базы-данных и именем-файла-сценария, как показано выше выделенным запросом или под экраном командной строки.

введите описание изображения здесь


Вы можете ввести имя пользователя -sa и пароль -123, sqlcmd -S viaserver -U sa -P 123 -d TelstraDeployed -i SQLQuery1.sql
Анил Сингх

это дает мне ошибку Sqlcmd: Ошибка: Mircorsoft SQL Server Native Client 10.0: Клиент не может установить соединение из-за сбоя перед входом.
гббосмия

11

Вы также можете просто увеличить значение Minimum memory per query в свойствах сервера. Чтобы изменить этот параметр, щелкните правой кнопкой мыши имя сервера и выберите «Свойства»> «Память».

Я столкнулся с этой ошибкой при попытке выполнить сценарий SQL размером 30 МБ в SSMS 2012. После увеличения значения с 1024 МБ до 2048 МБ я смог запустить сценарий.

(Это тот же ответ, который я дал здесь )


10

Для проверки подлинности Windows используйте этот sql cmd

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

Примечание. Если в пути к файлу sql есть пробел, используйте "(кавычки)"

Для аутентификации SQL Server используйте этот sql cmd

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

-S TestSQLServer \ SQLEXPRESS: здесь укажите имя сервера SQL

-U sa: имя пользователя (в случае аутентификации SQL Server)

-P sasa: Пароль (в случае аутентификации SQL Server)

-d AdventureWorks2018: имя базы данных иди сюда

-i "d: \ document \ sql document \ script.sql": путь к файлу SQLFile


5

Если я правильно понимаю вашу проблему, вы пытаетесь восстановить (транзакцию sql) xyz.sql - database + schema. Вы можете попробовать эту команду, которая сработала для меня:

SQLCMD -U sa -i xyz.sql

4

Моя база данных была больше 500 МБ, затем я использовал следующие

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

Он загрузил все, включая SP

* NB: запустите cmd от имени администратора


2

Иногда из-за большого размера скрипта и данных мы сталкиваемся с этим типом ошибки. Серверу требуется достаточно памяти для выполнения и выдачи результата. Мы можем просто увеличить размер памяти для каждого запроса.

Вам просто нужно перейти в свойства сервера sql> вкладка Память (слева)> Теперь установите максимальный предел памяти, который вы хотите добавить.

Кроме того, вверху есть опция «Результаты в текст», которая потребляет меньше памяти по сравнению с опцией «Результаты в сетку», мы также можем выбрать Результат в текст для меньшего объема памяти.


2

Попробуйте этот шаг,

1) Откройте PowerShell

2) Напишите эту команду:

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

3) Нажмите Return

:-)

введите описание изображения здесь


2

Ниже скрипт работает отлично:

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

Симптомы:

При выполнении сценария восстановления с помощью утилиты sqlcmd появляется сообщение «Sqlcmd: Error: синтаксическая ошибка в строке XYZ рядом с командой« X »в файле« имя_файла.sql »». обнаружена ошибка.

Причина:

Это ограничение утилиты sqlcmd. Если сценарий SQL содержит знак доллара ($) в любой форме, утилита не может правильно выполнить сценарий, поскольку по умолчанию она автоматически подставляет все переменные.

Разрешение:

Чтобы выполнить скрипт со знаком доллара ($) в любой форме, необходимо добавить параметр «-x» в командную строку.

например

Исходный: sqlcmd -s имя_сервера -d имя_базы_данных -E -ic: \ Temp \ Recovery_script.sql

Исправлено: sqlcmd -s Имя_сервера -d Имя_базы_данных -E -ic: \ Temp \ Recovery_script.sql -x


Комментарий $ был очень полезен. Спасибо
Pale Ale

1

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

  • Открыть командную строку при запуске от имени администратора

  • введите команду выше

mamxxxxxmu - имя компьютера, sqlserverr - имя сервера, sa - имя пользователя сервера, x1123 - пароль сервера, QLDB - имя базы данных, - D: \ qldbscript.sql - файл скрипта sql для выполнения в базе данных


1

Если вам нужно подключиться к LocalDB во время разработки, вы можете использовать:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.