Как запустить несколько SQL-скриптов с помощью пакетного файла?

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

Я не хочу идти и запускать все мои сценарии 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

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

Есть идеи?

Ответ 1

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

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

Ответ 2

У вас есть непревзойденная скобка. Пытаться

for %% f in (*.sql) do sqlcmd.exe -S имя_сервера -E -d databasename -i %% f >> output.txt

Я просто сохранил его в файле.cmd и, похоже, работает.

Ответ 4

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

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

Ответ 5

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

Ответ 6

Некоторые пакетные трюки

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

Ответ 7

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