SQL Serverデータベースを使用しています。これらのSQLクエリがあります。
Delete from TableA;
Delete from TableB;
Delete from TableC;
Delete from TableD;
Delete from TableE;
バッチファイルを使用してこれらのスクリプトを実行することは可能ですか?データベースはリモートデータベースです。
ありがとう!
コマンドを.SQL
ファイルに保存します。例:ClearTables.sql
、たとえばC:\temp
フォルダーに保存します。
内容C:\Temp\ClearTables.sql
Delete from TableA;
Delete from TableB;
Delete from TableC;
Delete from TableD;
Delete from TableE;
次にsqlcmd
を使用して、次のように実行します。データベースはリモートであると言ったので、次の構文を使用します(サーバーおよびデータベースインスタンス名の更新後)。
sqlcmd -S <ComputerName>\<InstanceName> -i C:\Temp\ClearTables.sql
たとえば、リモートコンピューター名がSQLSVRBOSTON1で、データベースインスタンス名がMyDB1の場合、コマンドは次のようになります。
sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql
また、-E
はデフォルト認証を指定することに注意してください。接続するユーザー名とパスワードがある場合は、-U
および-P
スイッチを使用します。
CMD
コマンドウィンドウを開いて、これらすべてを実行します。
バッチファイルの使用
バッチファイルに保存し、ダブルクリックして実行する場合は、次のようにします。
ClearTables.bat
を作成して保存します。
echo off
sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql
set /p delExit=Press the ENTER key to exit...:
次に、それをダブルクリックして実行します。コマンドを実行し、キーを押して終了するまで待機するため、コマンドの出力を確認できます。
SQL Serverに付属のSQLCMDコマンドラインツールをご覧ください。 http://technet.Microsoft.com/en-us/library/ms162773.aspx
SQLCMDユーティリティを使用します。
http://technet.Microsoft.com/en-us/library/ms162773.aspx
同じバッチでデータベースサーバーAからサーバーBにスイングできるようにする接続ステートメントがあります。
:connect server_name [\ instance_name] [-l timeout] [-U user_name [-P password]] SQL Serverのインスタンスに接続します。また、現在の接続を閉じます。
一方、PowerShellに精通している場合は、プログラムで同じことができます。
http://technet.Microsoft.com/en-us/library/cc281954(v = sql.105).aspx
違う方法:
SQL Serverエージェントの使用(ローカルインスタンスの場合)
タイプが「T-SQL」である新しいステップを使用して、SQL Serverエージェントでジョブをスケジュールしてから、ジョブを実行します。
SQLCMDを使用する
SQLCMDを使用するには、 http://technet.Microsoft.com/en-us/library/ms162773.aspx を参照してください。
SQLPSを使用する
SQLPSを使用するには、 http://technet.Microsoft.com/en-us/library/cc280450.aspx を参照してください。