Нужна помощь для записи файла bat, который выполняет SQL-скрипты в (sql server 2008 и еще 3 файла.?

Я уверен, что они были заданы раньше, но не могут найти четкую инструкцию, как создать пакетный файл позволяет называть его "обновить базу данных" этот пакетный файл должен

выполнение сценариев sql, расположенных в разных папках Выполните еще 3 файла bat.

никаких примеров как это сделать?Никогда не делал этого раньше. спасибо большое

редактировать

могу я это сделать?

:On Error exit 

:r C:myPathMasterUpdateDatabase.bat
GO 
SQLCMD -S (Local) -i C:myPathInsertUsername.sql

Я получаю сообщение об ошибке:

"GO" не распознается как внутренняя внешняя команда

Спасибо за любой вклад

4 ответов


похоже, вы пытаетесь использовать команды DOS для создания пакетного файла, который (a) выполняет другие пакетные файлы или (b) выполняет SQLCMD для запуска sql или SQL-скрипта.

вот несколько примеров, свернутых в один. Я использую команду DOS START С /WAIT switch, который будет поддерживать исходный пакетный файл "master" в одном окне и выполнять последующие файлы или команды в новом окне. Это новое окно остается открытым до завершения сценария и выходы.

часть ECHOs, вероятно, не требуются, но сценарий будет говорить с вами сейчас, немного.

@echo off

Итак, это довольно просто в том смысле, что вы просто запускаете скрипт. Если вы script1.bat имеет точки останова, вы можете вернуть ошибку обратно в основной скрипт и немедленно завершить ее. Я не был уверен, что именно для этого вам нужен мастер-сценарий.

echo Starting Database Update.
echo.

echo Excuting Script 1
echo.
start /wait C:\path\to\your\script1.bat

echo If there was a problem, break here.
Pause

echo Excuting Script 2
echo.
start /wait C:\path\to\your\script2.bat

echo If there was a problem, break here.
Pause

вот где использовал тот же START / WAIT, чтобы запустите программу SQLCMD, которая в этом случае просто возвращает результаты запроса. Здесь следует отметить, что -Q (верхний регистр) запускает запрос и завершает работу. Если вы используете -q (нижний регистр) он будет запускать запрос и сидеть открытым в SQLCMD, ожидая другого запроса.

echo.
echo Running SQLCMD: "select top 100 * from sys.objects"
start /wait sqlcmd -S (local) -Q "select top 100 * from sys.objects"

и это, как вы можете запустить SQL-скрипт, который -i обозначает, но я также не запускал это в START / WAIT, как раньше. Не то, чтобы вы должны, но я хотел показать оба примера. Что это шоу-это -b завершит пакетный процесс, если ваш скрипт вернет ошибку, что полезно, если вы используете несколько сценариев, которые зависят от успеха первого(ых).

echo.
echo Running SQLCMD from an (-i)nput file:
sqlcmd -S (local) -i  C:\path\to\your\script.sql -b

echo.
echo Update Complete.
pause

End

Итак, я предположил, что вы искали .летучая мышь или. cmd-файл, в котором используется программа SQLCMD. Пример, который я привел, довольно прост, но, надеюсь, он укажет вам правильный путь.

о! И помните, что CTRL+C разрывает пакетный скрипт в процессе.


фактическая ошибка, которую вы видите, заключается в том, что интерпретатор командной строки не распознает "GO", поэтому вы можете просто удалить эту строку.


надеюсь, это поможет вам :

sqlplus UserName/Password@DataBase @C:\myPath\InsertUsername.sql

P. S : Не забудьте добавить команду "commit;" в конце файла sql (InsertUsername.sql), эта команда приказывает Oracle сохранить выполненные изменения в darabase


этот ответ определенно работает для ваших целей:

sqlcmd -S localhost -U fdmsusr -P fdmsamho -i "E:\brantst\BranchAtt.sql" -o "E:\brantst\branchlog.txt"