Как запустить несколько сценариев SQL с помощью командного файла? - PullRequest
14 голосов
/ 13 января 2012

У меня есть случай, когда у меня есть 10+ SQL script.

Я не хочу идти и запускать все свои сценарии 1 на 1.

Есть ли способ, которыйя могу запустить все свои сценарии подряд в SQL Management studio.

Я нашел этот пост.Создание командного файла кажется более простым.

Это все, что вам нужно:

@echo off
ECHO %USERNAME% started the batch process at %TIME%  >output.txt


for %%f in (*.sql) do (
 (
sqlcmd.exe  -S servername -E   -d databasename -i %%f >>output.txt
)


pause

Замена имени сервера и базы данных, но, похоже, он не работает.

Есть идеи?

Ответы [ 7 ]

9 голосов
/ 07 февраля 2012

У вас есть непревзойденные скобки, там.Попробуйте

для %% f в (* .sql) do sqlcmd.exe -S имя_сервера -E -d имя-базы данных -i %% f >> output.txt

Я только что сохранилфайл .cmd, и он работает.

5 голосов
/ 13 января 2012

Да, это возможно. Вы можете сделать это с помощью: r команды SQLCMD.

Я настоятельно рекомендую вам прочитать эту статью и сделать это с SQLCMD

http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/

3 голосов
/ 13 января 2012

Вы можете создать Strored процедуру для вызова всех ваших сценариев. Вы также можете создать план-график для автоматического запуска сценариев.

http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx

2 голосов
/ 05 марта 2012

Вот утилита с открытым исходным кодом с исходным кодом http://scriptzrunner.codeplex.com/

Эта утилита была написана на c # и позволяет вам перетаскивать много файлов sql и запускать их для базы данных.

1 голос
/ 07 августа 2012

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

0 голосов
/ 20 июля 2015

Вы можете использовать Пакетный компилятор надстройка для SMSS, позволяющая запускать несколько сценариев одновременно, создавать сценарии SQLCMD или объединять их в файл * .sql.

0 голосов
/ 07 июля 2015

Какой-то трюк

cd %~dp0 //use this if you use 'for xxx in', it solved most of my problems 

ECHO %USERNAME% started the batch process at %TIME%  >output.txt


for %%f in (*.sql) do (
(
sqlcmd.exe  -S servername -E -d databasename -i %%f >>output.txt
)
echo %errorlevel%
pause
...