Не вдається виконати сценарій: Недостатньо пам’яті, щоб продовжити виконання програми


85

У мене є файл sql розміром 123 Мб, який мені потрібно виконати на моєму локальному ПК. Але я отримую

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

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

Як вирішити це питання?


@marc_s Коли я натискаю Ctlr + E, одразу відображається ця помилка
user960567

Відповіді:


123

скористайтеся інструментом командного рядка SQLCMD, який значно економить пам'ять. Це так просто, як:

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

Вам потрібні дійсні облікові дані для доступу до вашого екземпляра SQL Server або навіть для доступу до бази даних

Взято звідси .


23
З повними обліковими даними, вказавши db та сервер: sqlcmd -S <YOUR-SERVER> -U <YOUR-USER> -P <YOUR-PASSWORD> -d <YOUR-DATABASE> -i <YOUR-SQL-FILE-PATH.sql >
a4bike

1
Я отримую таку проблему: "Кількість виразів значень рядків в інструкції INSERT перевищує максимально дозволену кількість значень 1000 рядків."
Крістіан Фред

3
додайте -eдля надійного зв’язку
smurtagh

33

Це може вам допомогти! Будь ласка, див. Кроки нижче.

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

  • Відкрийте cmd.exe як адміністратор.
  • Створити каталог документів.
  • Помістіть файл SQL Script (script.sql) у папку документів.
  • Введіть запит за допомогою sqlcmd, ім'я сервера, ім'я бази даних та ім'я файлу сценарію, як, наприклад, підсвічений запит або під екраном командного рядка.

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


Ви можете Aad ім'я користувача -sa та пароль -123, sqlcmd -S viaserver -U sa -P 123 -d TelstraDeployed -i SQLQuery1.sql
Anil Singh

11

Ви також можете просто збільшити мінімальну пам'ять на значення запиту у властивостях сервера. Щоб відредагувати це налаштування, клацніть правою кнопкою миші на назві сервера та виберіть «Властивості»> вкладка «Пам'ять».

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

(Це та сама відповідь, яку я дав тут )


9

Для автентифікації Windows використовуйте цей cmd cmd

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

Примітка: Якщо в шляху до файлу sql є пробіл, використовуйте "(Лапки)"

Для автентифікації SQL Server використовуйте цей cmd cmd

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

-S TestSQLServer \ SQLEXPRESS: Тут вкажіть ім'я SQL Server

-U sa: Ім'я користувача (у випадку автентифікації SQL Server)

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

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

-i "d: \ document \ sql document \ script.sql": Шлях до файлу SQLFile


5

Якщо я правильно зрозумів вашу проблему, ви намагаєтесь відновити (здійснити транзакцію sql) xyz.sql - база даних + схема. Ви можете спробувати цю команду, яка працювала для мене:

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

Нижче сценарій чудово працює:

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

Симптоми:

При виконанні сценарію відновлення за допомогою утиліти sqlcmd з'являється повідомлення 'Sqlcmd: Помилка: Синтаксична помилка в рядку XYZ біля команди' X 'у файлі' file_name.sql '.' сталася помилка.

Причина:

Це обмеження утиліти sqlcmd. Якщо скрипт SQL містить знак долара ($) у будь-якій формі, утиліта не може належним чином виконати сценарій, оскільки за замовчуванням автоматично замінює всі змінні.

Дозвіл:

Для того, щоб виконати скрипт, який має знак долара ($) у будь-якій формі, необхідно додати параметр “-x” до командного рядка.

напр

Оригінал: sqlcmd -s Ім'я сервера -d Ім'я бази даних -E -ic: \ Temp \ Recovery_script.sql

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


$ comment був дуже корисним. Подяка
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

Спробуйте цей крок,

1) Відкрийте PowerShell

2) Напишіть цю команду:

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

3) Натисніть Return

:-)

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


1

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

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.