他の開発者が SQL Server 2005 データベースに加えた変更を適用するために実行しなければならない .sql ファイルがいくつかあります。ファイルは、次のパターンに従って名前が付けられます。
0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...
それらすべてを一度に実行する方法はありますか?
他の開発者が SQL Server 2005 データベースに加えた変更を適用するために実行しなければならない .sql ファイルがいくつかあります。ファイルは、次のパターンに従って名前が付けられます。
0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...
それらすべてを一度に実行する方法はありますか?
次のコマンドで .BAT ファイルを作成します。
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause
ユーザー名とパスワードを提供する必要がある場合
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P
password -i"%%G"
ユーザー/パスワードが提供されている場合、「-E」は必要ないことに注意してください
この .BAT ファイルを .SQL ファイルを実行したいディレクトリに置き、.BAT ファイルをダブルクリックすれば完了です!
FORを使用します。コマンドプロンプトから:
c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
管理スタジオで [クエリ] > [SQLCMD モード] オプションをクリックして、SQLCMD が有効になっていることを確認します。
フォルダに4 つの .sql ファイル ( script1.sql,script2.sql,script3.sql,script4.sql
) があるとしますc:\scripts
。
次の内容でメイン スクリプト ファイル (Main.sql) を作成します。
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
:r c:\Scripts\script4.sql
Main.sql を c:\scripts 自体に保存します。
ExecuteScripts.bat
次の名前のバッチ ファイルを作成します。
SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
PAUSE
<YourDatabaseName>
スクリプトを実行するデータベースに置き換えることを忘れないでください。たとえば、データベースが「Employee」の場合、コマンドは次のようになります。
SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
PAUSE
バッチファイルをダブルクリックして実行します。
一般的なクエリ
以下の行をbatch.batという名前でメモ帳に保存し 、すべてのスクリプトファイルがあるフォルダー内に配置します
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
例
for %%G in (*.sql) do sqlcmd /S NFGDDD23432 /d EMPLYEEDB -i"%%G" 一時停止
ログインに失敗した場合は、以下のコードとユーザー名とパスワードを使用してください
for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause
for %%G in (*.sql) do sqlcmd /S NE8148server /d EMPLYEEDB -U Scott -P tiger -i"%%G" 一時停止
スクリプトファイルがあるフォルダー内にbatファイルを作成したら、batファイルをクリックするだけでスクリプトが実行されます
多くの SQL ファイルをドラッグ アンド ドロップしてデータベースに対して実行できるようにするオープン ソース ユーティリティを C# で作成しました。
このユーティリティには次の機能があります。
私が知っていることは、osql または sqlcmd コマンドを使用して複数の sql ファイルを実行できることです。欠点は、両方のコマンドのスクリプトを作成する必要があることです。
SQLCMD を使用して複数の SQL Server スクリプトを実行する
OSQL (これは SQL Server 2000 用です)
http://msdn.microsoft.com/en-us/library/aa213087(v=SQL.80).aspx
他のすべてを呼び出す単一のスクリプトを作成できます。
以下をバッチファイルに入れます。
@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"
そのバッチ ファイルを実行するとall.sql
、バッチ ファイルが置かれているディレクトリと同じ名前の新しいスクリプトが作成されます。.sql
バッチ ファイルが配置されているディレクトリと同じディレクトリで、拡張子を持つすべてのファイルが検索されます。
次に、を使用してすべてのスクリプトを実行できます(または、スクリプトの作成後sqlplus user/pwd @all.sql
に呼び出すようにバッチ ファイルを拡張します) 。sqlplus
all.sql