Нужна помощь в написании файла Bat, который выполняет сценарии SQL в (SQL Server 2008 и еще 3 файла.? - PullRequest
7 голосов
/ 25 сентября 2010

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

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

Какие-нибудь быстрые примеры, как это сделать? Никогда раньше этого не делали. большое спасибо

EDITED

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

:On Error exit 

:r C:\myPath\MasterUpdateDatabase.bat
GO 
SQLCMD -S (Local) -i C:\myPath\InsertUsername.sql

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

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

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

Ответы [ 4 ]

5 голосов
/ 21 октября 2010

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

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

Некоторые из ECHO, вероятно, не требуются, но сценарий немного перезвонит вам.

@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

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

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

1 голос
/ 28 октября 2010

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

0 голосов
/ 18 ноября 2015

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

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

0 голосов
/ 23 декабря 2013

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

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

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

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