sqlcmd ユーティリティの使用 (SQL Server Express)

コマンド プロンプトから sqlcmd ユーティリティを使用して、Microsoft SQL Server 2008 Express (SQL Server Express) データベースを管理できます。sqlcmd ユーティリティを使用するには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして、「sqlcmd.exe」と入力します。

SQLCMD 構文

sqlcmd ユーティリティを実行する場合は、次の引数を使用できます。個々の引数については、SQL Server オンライン ブックの「sqlcmd ユーティリティ」および「チュートリアル: sqlcmd ユーティリティ」を参照してください。

Sqlcmd
  [-U login id] [-P password] [-S server] [-H hostname] 
  [-E trusted connection] [-d use database name] [-l login timeout]
  [-N encrypt connection] [-C trust the server certificate]
  [-t query timeout] [-h headers] [-s colseparator] [-w screen width]
  [-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
  [-c cmdend] [-L[c] list servers[clean output]] [-q "cmdline query"]
  [-Q "cmdline query" and exit] [-m errorlevel] [-V severitylevel]
  [-W remove trailing spaces] [-u unicode output]
  [-r[0|1] msgs to stderr] [-i inputfile] [-o outputfile]
  [-f <codepage> | i:<codepage>[,o:<codepage>]]
  [-k[1|2] remove[replace] control characters]
  [-y variable length type display width]
  [-Y fixed length type display width]
  [-p[1] print statistics[colon format]]
  [-R use client regional setting] [-b On error batch abort]
  [-v var = "value"...]
  [-X[1] disable commands[and exit with warning]]
  [-? show syntax summary]

SQLCMD コマンド

次の表は、sqlcmd ユーティリティ内から使用できるコマンドの概要を示します。これらのコマンドの詳細については、SQL Server 2008 オンライン ブックの「sqlcmd ユーティリティ」を参照してください。

コマンド

説明

go [count]

キャッシュされた Transact-SQL ステートメントを実行します。count の値を指定すると、キャッシュされたステートメントが 1 つのバッチとして count の回数だけ実行されます。たとえば、次の例では、2 つのステートメントが 2 回実行されます。

1> Use MyDatabase
2> SELECT FirstName, LastName FROM Employee WHERE EmployeeID < 10
3> GO 2

-Nencrypt connection

暗号化された接続を要求するには、クライアント側でこのスイッチを使用します。このオプションは、ADO.net の ENCRYPT = true オプションと同等です。

-Ctrust the server certificate

サーバーの証明書を信頼し、その有効性を検証しないように設定するには、クライアント側でこのスイッチを使用します。このオプションは、ADO.net の TRUSTSERVERCERTIFICATE = true オプションと同等です。

reset

ステートメント キャッシュをクリアします。

ed

このコマンドを入力すると、現在のステートメント バッチまたは最後に実行されたステートメント バッチを編集できます。最後に実行したバッチを編集するには、最後のバッチが実行された直後にこのコマンドを入力します。

!! <コマンド>

オペレーティング システムのコマンドを実行します。オペレーティング システムのコマンドを実行するには、行頭に 2 つの感嘆符 (!!) を入力し、続けてオペレーティング システムのコマンドを入力します。たとえば、次の例では、現在のドライブのディレクトリの一覧が表示されます。

1> !! dir

quit

- または -

exit

sqlcmd を直ちに終了します。

exit [(statement)]

このコマンドを入力すると、sqlcmd からの戻り値として SELECT ステートメントの結果を使用できます。

exit() ステートメントのかっこ内に何も指定していなければ、バッチ内のそのステートメントより前にあるものすべてが実行され、戻り値が返されずに終了します。

バッチ ファイルの一部として、exit パラメーターを使用することもできます。次に例を示します。

sqlcmd /Q "exit(SELECT COUNT(*) FROM '%1')"

:r <filename>

filename によって指定されたファイルを基に、Transact-SQL ステートメントと sqlcmd コマンドを解析し、ステートメント キャッシュ内に登録します。ファイルは、バッチ ターミネータ (go) が発行された後に読み取られ、実行されます。

:serverlist

ローカルに構成されたサーバー、およびネットワーク上でブロードキャストしているサーバー名の一覧を表示します。

:list

ステートメント キャッシュの内容を出力します。

:listvar

現在設定されているスクリプト変数の一覧を表示します。

:error <destination>[ filename | STDERR | STDOUT]

すべてのエラー出力を、filename によって指定されたファイル、または STDERR ストリームや STDOUT ストリームにリダイレクトします。既定では、エラー出力は STDERR に送信されます。

:out <destination>[ filename | STDERR | STDOUT ]

すべてのクエリ結果を、filename によって指定されたファイル、または STDERR ストリームや STDOUT ストリームにリダイレクトします。既定では、出力は STDOUT に送信されます。

:perftrace <destination>[ filename | STDERR | STDOUT ]

すべてのパフォーマンス トレース情報を、filename によって指定されたファイル、または STDERR ストリームや STDOUT ストリームにリダイレクトします。既定では、パフォーマンス トレース出力は STDOUT に送信されます。

:connect server_name[\instance_name] [-t timeout] [-U username [-P password] ]

SQL Server のインスタンスに接続し、現在の接続を閉じます。

:on error [ exit | ignore ]

スクリプト実行中またはバッチ実行中のエラー発生時に対応するアクションを設定します。

exit オプションを使用した場合、sqlcmd は該当するエラー値を表示して終了します。

ignore オプションを使用した場合、sqlcmd はエラーを無視し、バッチまたはスクリプトの実行を継続します。既定では、エラー メッセージが出力されます。

:help

sqlcmd コマンド、および各コマンドの簡単な説明を一覧表示します。

SQL Server Express への接続

SQL Server Express サーバーに接続する場合は、サーバー名を指定する必要があります。また、SQL Server Express が名前付きインスタンスにインストールされている場合は、インスタンス名も指定する必要があります。既定では、sqlcmd では Windows 認証が使用されます。SQL Server 認証を使用して SQL Server Express サーバーに接続する場合は、SQL Server Express サーバーに接続するためのログオン情報も指定する必要があります。たとえば、server1 という名前の付けられているサーバー上の SQL Server Express の既定のインストールに接続する場合、次のような引数を使用できます。

sqlcmd -S server1\SQLExpress -U SqlUserAccount -P SqlPassword
注意

-P 引数を使用した場合、コマンド プロンプトにプレーンテキストでパスワードが表示されます。-P 引数を省略した場合は、パスワードを入力するように求められます。入力したテキストは非表示になります。

SQL Server Express を実行しているサーバー上で信頼済みのユーザー アカウントを使用してログオンしている場合は、-U 引数と -P 引数を省略できます。

sqlcmd -S server1\SQLExpress
注意

-E 引数は信頼関係接続の指定に使用します。これは、sqlcmd の既定の設定であるため、-E 引数は省略できます。

次の例では、sqlcmd ユーティリティを使用して、SqlServer1 という名前のサーバー上にある SqlExpress という名前の SQL Server Express のインスタンスに接続する方法を示します。

Sqlcmd -S SqlServer1\SqlExpress

接続したら、他のコマンドを発行してインスタンスを管理できます。たとえば、次のコマンドを使用して、現在インストールされているすべてのデータベースを表示できます。これは、アタッチされた SQL Server Express データベースの論理名を検出したい場合に便利な方法です。

SELECT name from sys.databases
Go

sp_configure システム ストアド プロシージャ

SQL Server Express リソースを管理および最適化するには、sp_configure システム ストアド プロシージャを使用して、構成オプションを設定できます。sp_configure の詳細については、SQL Server オンライン ブックの「サーバー構成オプションの設定」を参照してください。

次の構成オプションは、sp_configure の一部ですが、SQL Server Express ではサポートされていません。

  • Agent XPs

  • Database Mail XPs

  • SQL Mail XPs

  • Web Assistant プロシージャ