(1) バッチファイルでSQLServerに接続する方法
(1-1) 構文
(1-2) オプションの説明
(1-3) 各オプションの挙動をサンプルで確認
(1) バッチファイルでSQLServerに接続する方法
(1-1) 構文
SQLServerに接続するためには「sqlcmd」というコマンドを使います。
sqlcmd -S [ホスト名]
「sqlcmd」は随時で対話的に「Transact-SQL」(=SQLの拡張言語)のステートメント(≒有効なSQLコマンド)やスクリプトを実行するための、コマンドラインユーティリティです(OracleでいうSQL*Plusのような機能)。
主に実行方法は2つあり、1つ目は単一のTransact-SQLステートメントをコマンドプロンプトから実行する方法と、2つ目は「Transact-SQL」を含むテキストファイルをsqlcmdに参照させることで実行もできます。
上記の構文をコマンドプロンプトから実行すると、内部的には「sqlcmd.exe」が実行され、データベースへの接続を行います。正常に接続できると、プロンプトに「1>」の表示がされます。これはsqlcmdプロンプトと呼ばれています(1は開始地点の意味の1)。
(図111)「-S」オプションでホスト名を指定して接続
(図112)接続後はSQL等を実行できる
(1-2) オプションの説明
「sqlcmd」コマンドには様々なオプションがありますが、その内の代表的なオプションについてご紹介します。
(表)
認証系 | -S | ■Windows認証でホスト/インスタンス接続 ①「ホスト名」で接続 接続先の「ホスト名」を指定すると、「Windows認証」でデフォルトのインスタンスに接続します。 (例) sqlcmd -S [HostName] ②「ホスト名\インスタンス名」で接続 |
認証系 | -U | ■SQLServer認証でホスト/インスタンス接続 「-U」の後にユーザー名(saユーザとか)を指定して接続試行すると、パスワードの入力を求めるプロンプトが起動します。 (例) sqlcmd -U [UserName] -S [HostName] |
認証系 | -P | SQL認証でのユーザーのパスワードを指定。 |
認証系 | -E | 信頼接続(統合認証)で利用します。 |
SQLクエリ系 | -q | ・SQLクエリを指定して実行し、結果をsqlcmdコンソールに表示します。 ・クエリ実行後はsqlcmdは継続して動き続けます(入力待ちが継続する) (例)テーブルからSELECTでレコードを取得 |
SQLクエリ系 | -Q | ・SQLクエリを指定して実行し、結果をsqlcmdコンソールに表示します。 ・クエリ実行後はsqlcmdをexit(終了)します(通常のcmdプロンプトに戻る) (例)テーブルからSELECTでレコードを取得 |
入力系 | -i | 入力として使用するインプットファイル(SQLファイル)を指定します。 (例) sqlcmd -S [HostName]\[InstanceName] -i XXXX.sql |
入力系 | -d | [データベース名](masterやtempなど)を指定すると、sqlcmdの開始時に「USE [データベース名]」を発行します。 (例)テーブルからSELECTでレコードを取得 sqlcmd -d [master] -Q “SELECT * FROM [SOME TABLE]” |
入力系 | -s | カラムの区切り文字を指定。 |
出力系 | -o | sqlcmdの実行結果の出力先を指定します。 指定はアウトプットファイル(のパス)を指定します。 (例)「-Q」でSQL実行した結果を「-o」でテキストファイルに出力。 sqlcmd -Q “SELECT * FROM [SOME TABLE]” -o Output.txt |
エラー処理系 | -b | バッチジョブがエラーになった場合に終了します。 |
タイムアウト系 | -l | sqlcmdのサーバ接続試行時のタイムアウト時間を指定します。 |
構文・処理系 | -I | ONにするとダブルクォーテーション「”」で囲まれた文言が「識別子=Identifier」(≒テーブル名、カラム名などの識別子」として扱われます。 逆にOFFだとダブルクォーテーションもリテラル(べた書きの文字)として扱われてしまいます。 |
構文・処理系 | -W | 列から後続の空白を削除。 |
(1-3) 各オプションの挙動をサンプルで確認
(図132)「-U」オプション
(図131)「-P」オプション
(図133)「-E」オプション
(図134)「-q」オプション
(図135)「-Q」オプション
(図136)「-i」オプション
(図137)「-d」オプション
(図138)「-s」オプション
(図139)「-o」オプション