Нужна помощь для записи файла 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" в одном окне и выполнять последующие файлы или команды в новом окне. Это новое окно остается открытым до завершения сценария и выходы.
часть ECHO
s, вероятно, не требуются, но сценарий будет говорить с вами сейчас, немного.
@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"