Transact-SQL エディタでの SQLCMD スクリプトの編集

Transact-SQL (T-SQL) エディタでスクリプトを作成または編集する場合、SQLCMD モードを有効にしておくと、T-SQL コマンドと SQLCMD コマンドを混在させて使用できます。詳細については、「方法 : Transact-SQL エディタで SQLCMD モードを有効にする」を参照してください。

SQLCMD スクリプトの作成と編集

SQLCMD コマンドおよび T-SQL コマンドを同じスクリプトに含める場合は、そのスクリプトが以下の要件を満たしていることを確認してください。

  • SQLCMD コマンドは行の最初のステートメントにする必要があります。

  • 各行に記述できる SQLCMD コマンドは、1 つのみです。

  • SQLCMD コマンドの前に、コメントまたは空白を記述できます。

  • コメント文字を使用して、SQLCMD コマンドの実行を防止できます。

  • 単一行コメント文字を 1 つ作成するには、2 つのハイフンを行の冒頭に記述する必要があります。

  • 各 SQLCMD コマンドの前にコロンを記述して、T-SQL コマンドと明確に区別できるようにします。

  • 環境変数および SQLCMD スクリプトの一部として定義された変数を使用できますが、組み込みの SQLCMD 変数は使用できません。

SQLCMD 構文の使用

以下のコマンドを使用できます。

  • :r FileName
    FileName で指定されたファイルにある、追加の T-SQL ステートメントおよび SQLCMD コマンドを解析して、ステートメント キャッシュに格納します。FileName は、Visual Studio のスタートアップ ディレクトリに対する相対的な場所から読み込まれます。ファイルが読み取られ、バッチ終端文字が検出されると実行されます。複数の :r コマンドを発行できます。ファイルには、[ツール] の [オプション] で定義されたバッチ終端文字を含む、任意の SQLCMD コマンドを含めることができます。配置前スクリプトまたは配置後スクリプトで :r を使用して、他のスクリプトを読み込むこともできます。

  • :setvar Variable Value
    スクリプト変数を定義します。スクリプト変数は、次の形式で指定します。$(Variable).変数名では、大文字と小文字は区別されません。:setvar を使用して定義される変数が環境変数と同じ名前を持つ場合、:setvar を使用して定義される変数の方が優先します。変数名に空白文字は使用できません。変数名に、変数式と同じ形式 (as $(var) など) を指定することはできません。スクリプト変数の文字列値に空白がある場合は、その値を引用符で囲む必要があります。スクリプト変数の値が指定されていない場合、そのスクリプト変数は削除されます。

  • :connect ServerName[\InstanceName] [-l Timeout] [-U UserName [-P Password]]
    Microsoft SQL Server のインスタンスに接続し、Timeout で指定された秒数が経過すると、現在の接続を閉じます。「-l 0」を指定してタイムアウトを無限にするか、「-l 30」のように正の秒数を指定します。UserName および Password にオプションも環境変数も指定しない場合は、ログオンに Windows 認証モードが使用されます。

  • :on error [exit | ignore]
    スクリプトまたはバッチの実行中にエラーが生じた場合に実行するアクションを設定します。exit オプションを使用すると、適切なエラー値を設定して実行が終了します。ignore オプションを使用すると、T-SQL エディタではエラーが無視され、バッチまたはスクリプトの実行が続行します。エラー メッセージが既定で出力されます。

  • :listvar
    現在設定されているスクリプト変数の一覧を表示します。SQLCMD モードの現在のセッションで設定されたスクリプト変数のみが表示されます。

  • :exit
    バッチを実行せず、値も返さずに現在のバッチを停止します。

  • :exit()
    バッチを実行し、値を返さずに停止します。

  • :exit(Query)
    バッチ (Query を含む) を実行し、Query の結果を返して停止します。

統合セキュリティを使用して SQL Server myserver のインスタンス instance1 に接続する場合、次のコマンドを含めます。

:connect myserver\instance1.

スクリプト変数を使用して myserver の既定のインスタンスに接続する場合、次のコマンドを含めます。

:setvar myusername test

:setvar myservername myserver

:connect $(myservername) $(myusername)

C:\Files の selectFromTable.sql ファイルに格納されている簡単なクエリを実行するには、次のコマンドを含めます。

:SETVAR tablevar Suppliers

:r C:\Files\selectFromTable.sql

GO

:SETVAR tablevar Customers

:r C:\Files\selectFromTable.sql

GO

selectFromTable.sql ファイルには、次のサンプル クエリが含まれています。

SELECT * FROM $(tablevar)

GO

参照

処理手順

方法 : クエリを実行する

方法 : クエリ実行とクエリ結果のオプションを設定する

概念

クエリ結果の概要