回答:
次のコマンドで.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 %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P "password" -i"%%G"
FORを使用します。コマンドプロンプトから:
c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f" >> sql.log 2>&1)
出力のリダイレクトの詳細については、こちらをご覧ください
SQL Management Studioで新しいクエリを開き、すべてのファイルを次のように入力します
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
SQLCMDモードをクリックします。ファイルは以下のように灰色で選択されます
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
Management Studioで[クエリ]> [SQLCMDモード]オプションをクリックして、SQLCMDが有効になっていることを確認します。
script1.sql,script2.sql,script3.sql,script4.sql
フォルダに4つの.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>
スクリプトを実行するデータベースに置き換えることを忘れないでください。たとえば、データベースが「従業員」の場合、コマンドは次のようになります。
SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
PAUSE
バッチファイルをダブルクリックして実行します。
-b
例と同様:SQLCMD -b -i "file 1.sql","file 2.sql"
ApexSQL Propagateを使用できます。複数のデータベースで複数のスクリプトを実行する無料のツールです。必要な数のスクリプトを選択して、1つまたは複数のデータベース(複数のサーバーでも)に対して実行できます。スクリプトリストを作成して保存し、作成した順序で同じスクリプトを実行するたびにそのリストを選択するだけです(複数のスクリプトリストを追加することもできます)。
スクリプトとデータベースを選択すると、メインウィンドウに表示され、[実行]ボタンをクリックするだけで、選択したデータベースですべてのスクリプトが指定した順序で実行されます。
一般的なクエリ
以下の行をbatch.batという名前でメモ帳に保存し、 すべてのスクリプトファイルがあるフォルダー内に配置します。
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
例
(* .sql)の%% Gの場合、sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i "%% G"を一時停止します
ログインに失敗した場合は、以下のコードをユーザー名とパスワードとともに使用してください
for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause
(* .sql)の%% Gの場合、sqlcmd / S NE8148server / d EMPLYEEDB -U Scott -P tiger -i "%% G" pause
スクリプトファイルが存在するフォルダー内にbatファイルを作成した後、batファイルをクリックするだけでスクリプトが実行されます
私が書いたオープンソースユーティリティドラッグすることができますし、多くのSQLファイルをドロップし、データベースに対してそれらの実行を開始C#での。
ユーティリティには次の機能があります。
私が見つけた最も簡単な方法は、次の手順を含みました(唯一の要件は、Win7 +にあることです):
長く聞こえるかもしれませんが、実際には非常に高速です(最小ステップでも説明したように長く聞こえます)。
osqlまたはsqlcmdコマンドを使用して複数のsqlファイルを実行できることを知っています。欠点は、両方のコマンドのスクリプトを作成する必要があることです。
SQLCMDを使用して複数のSQL Serverスクリプトを実行する
OSQL(これはSQL Server 2000用です)
http://msdn.microsoft.com/en-us/library/aa213087(v=SQL.80).aspx
@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE
for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)
ステップ1:上記の行をメモ帳にコピーして、バットとして保存します。
手順2:SQLサーバーで実行されたクエリのすべてのSqlファイルのdドライブのabcフォルダー。
ステップ3:IP、ユーザーID、パスワードを入力します。
他のすべてを呼び出す単一のスクリプトを作成できます。
以下をバッチファイルに入れます。
@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
スクリプトを作成した後に呼び出すようにバッチファイルを拡張します)。
同じディレクトリですべてのSQLfileを実行するには、次のコマンドを使用します。
ls | awk '{print "@"$0}' > all.sql
このコマンドは、ディレクトリ内のすべてのSQLファイルの名前に「@」を付加した単一のSQLファイルを作成します。
all.sql
が作成された後、all.sql
SQLPlusで実行するだけで、内のすべてのSQLファイルが実行されますall.sql
。