私は10以上のSQL script
を持っている場合があります。
すべてのスクリプトを1つずつ実行したくありません。
すべてのスクリプトをSQL Management studio
で連続して実行できる方法はありますか?.
this の投稿を見つけました。バッチファイルを作成する方が簡単なようです。
これで十分です。
@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
Servernameとdatabasenameを置き換えていますが、機能していないようです。
何か案は?
Strored Procedureを作成して、すべてのスクリプトを呼び出すことができます。また、スクリプトを自動的に実行するスケジュール計画を作成することもできます。
http://msdn.Microsoft.com/en-us/library/aa174792(v = sql.80).aspx
そこには無類の括弧があります。試す
(* .sql)の%% fの場合、sqlcmd.exe -S servername -E -d databasename -i %% f >> output.txtを実行します
.cmdファイルに保存したところ、正常に機能しているようです。
はい、可能です。 SQLCMD
の:rコマンドで実行できます。
この記事を読んでSQLCMD
で実行することを強くお勧めします
http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/
これは、ソースコードを含むオープンソースユーティリティです http://scriptzrunner.codeplex.com/
このユーティリティはC#で記述されており、多数のSQLファイルをドラッグアンドドロップして、データベースに対して実行を開始できます。
あなたはおそらくこれをすでに知っています。知らない場合、投稿したスクリプトはSQLサーバーがインストールされているマシンでのみ実行されます。
SMSSの Batch Compiler アドインを使用すると、一度に複数のスクリプトを実行したり、SQLCMDスクリプトを作成したり、*。sqlファイルに統合したりできます。
バッチトリック
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