Я использую сравнение данных RedGate SQL и сгенерировал файл .sql, чтобы запустить его на своем локальном компьютере. Но проблема в том, что размер файла превышает 300 МБ, что означает, что я не могу копировать и вставлять, потому что буфер обмена не сможет его обработать, и когда я пытаюсь открыть файл в SQL Server Management Studio, я получаю сообщение об ошибке о том, что файл слишком большой.
Есть ли способ запустить большой файл .sql? Файл в основном содержит данные для двух новых таблиц.


Запустите его в командной строке с помощью osql, см. Здесь:
http://metrix.fcny.org/wiki/display/dev/How+to+execute+a+.SQL+script+ using+OSQL
Из командной строки запустите sqlcmd:
sqlcmd -S <server> -i C:\<your file here>.sql
Просто замените <server> на местоположение вашего SQL-бокса и <your file here> на имя вашего скрипта. Не забывайте, что если вы используете экземпляр SQL, синтаксис следующий:
sqlcmd -S <server>\instance.
Вот список всех аргументов, которые можно передать sqlcmd:
Sqlcmd [-U login id] [-P password]
[-S server] [-H hostname] [-E trusted connection]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w screen width]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-c cmdend] [-L[c] list servers[clean output]]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-m errorlevel] [-V severitylevel] [-W remove trailing spaces]
[-u unicode output] [-r[0|1] msgs to stderr]
[-i inputfile] [-o outputfile] [-z new password]
[-f | i:[,o:]] [-Z new password and exit]
[-k[1|2] remove[replace] control characters]
[-y variable length type display width]
[-Y fixed length type display width]
[-p[1] print statistics[colon format]]
[-R use client regional setting]
[-b On error batch abort]
[-v var = "value"...] [-A dedicated admin connection]
[-X[1] disable commands, startup script, environment variables [and exit]]
[-x disable variable substitution]
[-? show syntax summary]
У меня есть вставка типа: INSERT INTO table_name (text) VALUES ('some text bla bla 'bla' text'). У меня ошибка с кавычками. Итак, что мне нужно использовать (какой параметр) для обработки этой ошибки? Спасибо
Можем ли мы сохранить сценарий на внешнем диске? Нравится E: драйв? вместо диска C?
Ага, ничто тебя не останавливает.
Просто подтверждаю, что я только что запустил sql-файл размером 1 ГБ с помощью этой команды
Это сработало для меня, но мне пришлось избавиться от -o в конце
Я также удалил -o с конца и запустил файл размером 800 МБ. Также я разделил файл на схему (которая открывается в студии управления и может быть отредактирована) и данные, которые были импортированы через командную строку, потому что запуск всего файла в коробке без диска C: \ сбрасывал все мои таблицы в master.
Мой сервер sql использовал экземпляр по умолчанию (MSSQLSERVER), поэтому экземпляр -S <server> \ сбивал меня с толку. Если это ваш случай, вы можете просто запустить -S localhost (без экземпляра и с именем вашего сервера).
К вашему сведению, SQL Server 2008 R2 запускал файлы размером от 400 МБ до 6 ГБ; работает по назначению.
Подтверждаю, что я только что запустил sql-файл размером 11+ ГБ. и это прекрасно работает.
не удалось запустить файл sql размером 75 ГБ.
Есть ли альтернатива этой команде для больших файлов sql?
Возможно, файлы SQL большего размера предполагают, что использование сырого SQL в качестве входных данных - неправильный выбор. Если официальные инструменты не справляются с файлами такого размера, вы можете либо разделить файлы самостоятельно, либо переместить данные на другой носитель, например резервную копию SQL.
Это потрясающе. Большое спасибо.
Ваш вопрос очень похож на Вот этот
Вы можете сохранить свой файл / скрипт как .txt или .sql и запустить его из Sql Server Management Studio (я думаю, что меню Open / Query, а затем просто запустите запрос в интерфейсе SSMS). Возможно, вам придется обновить первую строку, указав базу данных, которая будет создана или выбрана на вашем локальном компьютере.
Если вам нужно делать эту передачу данных очень часто, вы можете пойти на репликацию. В зависимости от ваших потребностей репликация моментальных снимков может подойти. Если вам нужно синхронизировать данные между двумя серверами, вы можете выбрать более сложную модель, такую как репликация слиянием.
Обновлено: я не заметил, что у вас были проблемы с SSMS, связанные с размером файла. Затем вы можете перейти к командной строке, как было предложено другими, репликации моментального снимка (опубликовать на вашем основном сервере, подписаться на локальном сервере, реплицировать, а затем отказаться от подписки) или даже резервное копирование / восстановление
Джек упомянул, что он не может сделать это из SSMS, так как файл слишком велик.
The file basically contain data for two new tables.
Тогда вам может быть проще просто обработать данные DTS (или SSIS, если это SQL Server 2005+), если два сервера находятся в одной сети.
Если два сервера не находятся в одной сети, вы можете сделать резервную копию исходной базы данных и восстановить ее в новую базу данных на конечном сервере. Затем вы можете использовать DTS / SSIS или даже простой INSERT INTO SELECT для передачи двух таблиц в целевую базу данных.
Если одна или две таблицы создают файл такого размера, можно с уверенностью предположить, что БД занимает пару гигабайт, что во многих случаях делает невозможным резервное копирование и восстановление.
У меня была точно такая же проблема, и я какое-то время боролся, а затем, наконец, нашел решение, которое заключается в установке параметра -a на sqlcmd, чтобы изменить размер пакета по умолчанию:
sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767
+1 за добавление опции -d в примере. Я использовал "USE [DBNAME]" в моем файле sql. Это тоже сработало. Не уверен, какой метод лучше или предпочтительнее
Спасибо. Я использовал следующую команду в качестве имени пользователя и пароля, необходимых для подключения к базе данных. sqlcmd -S <Servername> -U <Username> -P <password> -d <Databasename> -i <filename>
Какую проблему вы решили, задав размер пакета? Microsoft заявляет: «Большой размер пакета может повысить производительность ...» (docs.microsoft.com/en-us/sql/tools/sqlcmd-utility)
@TheincredibleJan Я думаю, он имеет в виду это: stackoverflow.com/q/55881713/345659
Вы также можете использовать этот инструмент. Это действительно полезно.
Я тоже думал, что это полезно, пока не запустил его с файлом SQL размером 400 МБ (полным операторов INSERT). После 9 часов работы ничего не было добавлено в базу данных, но BigSqlRunner потреблял от 3 до 6 ГБ памяти.
Очень полезно. Обычно я вручную разбиваю файл (различные инструменты) на куски, затем вручную редактирую их, чтобы операторы sql были «целыми», а затем выполнялись с помощью пакетного сценария. Это делает это НАСТОЛЬКО просто. 2.3gb .sql файл, легко.
Возьмите командную строку с правами администратора
Перейдите в каталог, в котором хранится файл .sql
Выполните следующую команду
sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql
Я использую MSSQL Express 2014, и ни одно из решений у меня не помогло. Все они просто вылетели из SQL. Поскольку мне нужно было только запустить разовый сценарий с множеством простых операторов вставки, я обошел это, написав небольшое консольное приложение в крайнем случае:
class Program
{
static void Main(string[] args)
{
RunScript();
}
private static void RunScript()
{
My_DataEntities db = new My_DataEntities();
string line;
System.IO.StreamReader file =
new System.IO.StreamReader("c:\\ukpostcodesmssql.sql");
while ((line = file.ReadLine()) != null)
{
db.Database.ExecuteSqlCommand(line);
}
file.Close();
}
}
Надеюсь, это поможет вам!
sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql
-U <имя пользователя> -P <пароль> Команды параметров должны быть в верхнем регистре, а не в нижнем регистре.
У меня была аналогичная проблема. Мой файл с sql-скриптом был размером более 150 МБ (с почти 900 КБ очень простых ВСТАВЛЯТЬ). Я использовал решение, рекомендованное Такуро (в качестве ответа на этот вопрос), но я все еще получал ошибку с сообщением о том, что недостаточно памяти («Недостаточно системной памяти во внутреннем пуле ресурсов для выполнения этого запроса»).
Мне помогло то, что я ставил команду ИДТИ после каждых 50k ВСТАВЛЯТЬ.
(Он не решает напрямую вопрос (размер файла), но я считаю, что он решает проблему, которая косвенно связана с большим размером самого sql-скрипта. В моем случае много команд вставки)
Я столкнулся с той же проблемой и потратил целый день, чтобы найти выход, но это было решено путем создания копии файла .sql, изменения расширения на файл .txt и открытия файла .txt в браузере Chrome. Я увидел волшебство, и файл открывается в браузере.
Спасибо и всего наилучшего,
Примечание.
sqlcmdзаменяетosql.