SQLServerでSQLを実行する際、わかりやすい方法としては
SQL Server Management Studio(SSMS)にて新しいクエリを作成する事ですが、
連続作業の場合にはコマンドラインからの実行が便利です。
そのためのツールがSQLCMDです。
sqlcmd ユーティリティを使用すると、Transact-SQL ステートメントやシステム プロシージャ、スクリプト ファイルを使用可能なさまざまなモードで入力できます。
- コマンド プロンプト。
- クエリ エディターでの SQLCMD モード。
- Windows スクリプト ファイル。
- SQL Server エージェント ジョブのオペレーティング システム (Cmd.exe) ジョブ ステップ。
このユーティリティでは、ODBC を使用して、Transact-SQL バッチを実行します。
利用前提環境
Windows インストーラー 4.5 と Microsoft ODBC Driver for SQL Server 17 の両方が必要です。
■利用法
コマンドプロンプトを起動から”SQLCMD”です。
管理者モードで起動する必要もなく、特に設定しなくてもパスが通っています。
オプションには以下のようなものがあります。
クエリ実行オプションを指定しない場合は対話モードになります。
この場合、クエリ実行の際にはSQL文の次に「GO」を指定します。
use msdb
go
のイメージですね。
-q または -Q で、コマンドオプションとしてSQL文を指定できます。
2つの違いはSQL文実行後の振る舞いです。
連続実行したいような場合は-Qを指定(コマンド1行ごとにSQLCMDの接続を終了する)がよいでしょう。
複数のインスタンスで同じSQL文を実行するような(例:新しいユーザを全DB環境に登録する)場合は、
実行するSQL文をファイルとして用意しておき、-i オプションで読み込ませるのが良さそうです。
※本投稿は過去に掲載したものを整理して再掲したものです。