Выполнение SQL-скриптов в пакете - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть около 100 сценариев, которые должны быть выполнены в SSMS.Как я могу выполнить их как пакет вместо выполнения каждого по отдельности.

Я пытался использовать это, но это не сработало.

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


FOR %%? in ("1.01*.SQL") DO 
 (
sqlcmd.exe  -S local -E   -d collect -i %%? >>output.txt
)

pause

Ответы [ 2 ]

3 голосов
/ 06 февраля 2012

Следующие сценарии запускают все сценарии в каталоге, выводят данные в файл .log и ошибки в файл .err.log:

@echo off
echo "Enter Server"
set /p SERVER=

echo "Enter Database"
set /p DATABASE=

if exist *.log ( del *.log )

rem Process the files
for %%i in (*.sql) do osql -E -S %SERVER% -d %DATABASE% -i"%%i" -m0 -w500 -I -b -r  -o"%%i.log"  2>%%i.err.log

rem Remove empty .err files (ie had no errors)
for %%a in (*.err.log) do if %%~za==0 del "%%a"


pause

Примечание. Однако в более ранней версии sqlcmdпроблемы с отсутствием данных в sqlcmd в журналах вывода.

0 голосов
/ 15 июля 2014

Для всех:

Я обнаружил некоторые проблемы с вышеперечисленным. Как Windows 7 Dos не понравился %% i или %% a, поэтому я удалил символ '%', а затем скрипт dos начал работать просто отлично.

Ниже приведена моя действующая версия скрипта, в которой при запуске скрипта "1.A00 * .SQL" мои целевые таблицы усекаются.

Сценарий запуска "A * .SQL" A01_name.sql -> A24_name.sql, что довольно неплохо

Хэнк Фриман hfreeman@msn.com

конец.

REM "FSA_3.2.2_Runner_for_Insert_Scripts.bat

Рем "Сценарист"

Рем "Как использовать этот скрипт"

Rem «Из сеанса удаленного рабочего стола Откройте приглашение Dos»

Rem "Запустить приведенный ниже скрипт"

Rem «Проверить, что данные были вставлены».

Рем "Хэнк Фриман, 15 июля 2014 г. hfreeman@msn.com"

Rem "* begin *"

с:

кд \

cd C: \ Database_Scripts \ Insert_Scripts

@ echo off

если существует * .log (del * .log)

rem "** Начиная с *"

rem "запустить файл усечения SQL"

для% i в (1.A00 _ *. SQL) выполните osql -E -i "% i" -m0 -w500 -I -b -r -o "% i.log" 2>% i.err. войти

rem "запустить файл SQL A01-A24"

для% i in (A * .SQL) выполните osql -E -i "% i" -m0 -w500 -I -b -r -o "% i.log" 2>% i.err.log

rem Удалить пустые файлы .err (т. Е. Не было ошибок)

для% a in (* .err.log), если% ~ za == 0 del "% a"

rem «Удалить логи - Ручное управление»

rem, если существует * .log (del * .log)

Rem "* end *"

@ echo on

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...