Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

SQLServer バッチ処理 (Batch Scripts)

バッチファイルでSQLServerに接続する方法~sqlcmdの各オプション挙動を実例で紹介~

投稿日:2020年11月12日 更新日:

<目次>

(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]

②「ホスト名\インスタンス名」で接続
接続先の「ホスト名\インスタンス名」を指定すると、「Windows認証」で指定したインスタンスに接続します。
(例)
sqlcmd -S [HostName]\[InstanceName]

認証系 -U ■SQLServer認証でホスト/インスタンス接続
「-U」の後にユーザー名(saユーザとか)を指定して接続試行すると、パスワードの入力を求めるプロンプトが起動します。
(例)
sqlcmd -U [UserName] -S [HostName]
認証系 -P SQL認証でのユーザーのパスワードを指定。
認証系 -E 信頼接続(統合認証)で利用します。
SQLクエリ系 -q ・SQLクエリを指定して実行し、結果をsqlcmdコンソールに表示します。
・クエリ実行後はsqlcmdは継続して動き続けます(入力待ちが継続する)

(例)テーブルからSELECTでレコードを取得
sqlcmd -q “SELECT * FROM [SOME TABLE]”

SQLクエリ系 -Q ・SQLクエリを指定して実行し、結果をsqlcmdコンソールに表示します。
・クエリ実行後はsqlcmdをexit(終了)します(通常のcmdプロンプトに戻る)

(例)テーブルからSELECTでレコードを取得
sqlcmd -Q “SELECT * FROM [SOME TABLE]”

入力系 -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」オプション

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-SQLServer, バッチ処理 (Batch Scripts)

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

SQLServerの復旧モデルの「単純」と「完全」と「一括ログ」の違いについて

<目次> (1) SQLServerの復旧モデルの「単純」と「完全」と「一括ログ」の違いについて  (1-1) 復旧モデルの概要  (1-2) 復旧モデルの比較表  (1-3) トランザクションログが …

Windowsバッチでイベントログに出力する方法+オプション説明表・サンプルPGも掲載

<目次> (1) Windowsバッチでイベントログに出力する方法  (1-1) 構文  (1-2) サンプルプログラム  (1-3) 少し応用:ERRORLEVELの値に応じてログ出力 (1) Wi …

WindowsでCドライブの空き容量を監視するバッチプログラムについて

(0)目次&概説 今回はWindowsマシンのCドライブ空き容量をチェックし、閾値との比較によってアラートメッセージを出したりするバッチプログラムの作成について紹介します。このバッチを使ってタスクスケ …

SQLServerでテーブルを作成する方法+主キーや外部キーの指定方法も

<目次> (1) SQLServerでテーブルを作成する方法  (1-1) 構文  (1-2) 実際の例  (1-3) SQLServerの操作例 (1) SQLServerでテーブルを作成する方法 …

SQLServerでクエリの履歴のトレースログを出力する方法

  <目次> (1) SQLServerでクエリの履歴のトレースログを出力する方法  (1-1) 概要  (1-2) 手順  (1-3) (参考)トレースの出力状況の確認方法  (1-4) …

  • English (United States)
  • 日本語
Top