SET CONTEXT_INFO (Transact-SQL)

128 バイト以内のバイナリ情報を現在のセッションまたは接続に関連付けます。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

SET CONTEXT_INFO { binary_str | @binary_var }

引数

  • binary_str
    現在のセッションまたは接続に関連付ける、binary 定数、または暗黙的に binary に変換できる定数を指定します。

  • **@**binary_var
    現在のセッションまたは接続に関連付けるコンテキスト値を保持するための、varbinary または binary 変数を指定します。

説明

現在のセッションのコンテキスト情報を取得するには、CONTEXT_INFO 関数を使用することをお勧めします。セッションのコンテキスト情報は、次のシステム ビューの context_info 列にも格納されます。

  • sys.dm_exec_requests

  • sys.dm_exec_sessions

  • sys.sysprocesses

SET CONTEXT_INFO は、ユーザー定義関数では指定できません。値を保持するビューでは NULL 値が許可されないため、SET CONTEXT_INFO に NULL 値は指定できません。

SET CONTEXT_INFO には、定数または変数名以外の式を指定できません。コンテキスト情報を関数呼び出しの結果に設定するには、最初に、binary または varbinary 型の変数に関数呼び出しの結果を格納する必要があります。

ストアド プロシージャまたはトリガの中で SET CONTEXT_INFO を実行する場合は、他の SET ステートメントの場合とは異なり、コンテキスト情報に設定された新しい値がストアド プロシージャまたはトリガの終了後も保持されます。

A. 定数を使用してコンテキスト情報を設定する

次の例では、SET CONTEXT_INFO に値を設定し、結果を表示します。sys.dm_exec_sessions のクエリを実行するには SELECT および VIEW SERVER STATE の権限が必要ですが、CONTEXT_INFO 関数を使用するのにこれらの権限は必要ありません。

SET CONTEXT_INFO 0x01010101
GO
SELECT context_info 
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID;
GO

B. 関数を使用してコンテキスト情報を設定する

次の例では、関数の出力を使用してコンテキスト値を設定します。最初に、binary 変数に関数からの値を格納する必要があります。

DECLARE @BinVar varbinary(128)
SET @BinVar = CAST(REPLICATE( 0x20, 128 ) AS varbinary(128) )
SET CONTEXT_INFO @BinVar

SELECT CONTEXT_INFO() AS MyContextInfo;
GO