【SQL Server】大量のSQLをバッチ処理でまとめて実行する方法

SQL Serverにおいて、大量のSQLをバッチ処理でまとめて実行する方法について説明しています。

大量のINSERTやUPDATEをManagement Studioで実行すると、メモリ不足となり実行できない場合があります。何回かに分ければ問題なく実行できますが、バッチファイルを利用するとまとめて実行することが出来ます。

どちらにしてもSQLを分割する手間はありますが、実行忘れや分割しながら実行する手間を考えるとバッチファイルを利用した方が簡単に実行できます。

バッチファイルの作成

ソース

for文で指定ディレクトリ内のファイル(.sql)数だけ繰り返し、ファイルは変数「%%f」に格納されます。

コマンド「sqlcmd」はSQLを実行するコマンドです。これに変数「%%f」に格納されているファイルを指定すると実行できます。

「-o %%f.log」でコンソール出力をファイルに出力しています。sqlファイルごとに出力ファイルが作成されます。

for %%f in (SQLディレクトリ\*.sql) do (
  sqlcmd -S サーバー名 -U ユーザー名 -P パスワード -d データベース名 -i %%f -o %%f.log
)

オプション

使用しているオプションの内容についてまとめます。
大文字/小文字で意味の違う設定になるものもありますので、しっかり区別しましょう。

オプション設定名称設定内容
-Sサーバーの名称ローカルDBなら「localhost」
-Uユーザ名DB接続に使用するユーザ名
-PパスワードDB接続に使用するパスワード
-dデータベース名接続するデータベース名
-i入力ファイル.sqlファイル
-o出力ファイル.logファイル

まとめ

SQL Serverにおいて、大量のSQLをバッチ処理でまとめて実行する方法について説明しました。

大量のSQLを実行しようとすると、人的ミスを起こすこともありますので、可能な限り自動化して実行した方が良いでしょう。

  • .sqlファイルを作成する
  • ディレクトリにまとめて配置する
  • for文を利用して、ファイル数分の「sqlcmd」を実行する
SQL
この記事を書いた人

エンジニアとして仕事をしています。
仕事や趣味を通して、開発やプログラミングについて学んだことを綴っていきます。
 ・実務経験は、WEBシステムのサーバーサイドコーディングがメイン
 ・アプリ開発は趣味程度

akihiro-takedaをフォローする
akihiro-takedaをフォローする
プログラミング・開発の備忘録
タイトルとURLをコピーしました