SET CONTEXT_INFO (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
128 バイト以内のバイナリ情報を現在のセッションまたは接続に関連付けます。
構文
SET CONTEXT_INFO { binary_str | @binary_var }
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
binary_str
現在のセッションまたは接続に関連付ける、binary 定数、または暗黙的に binary に変換できる定数を指定します。
@binary_var
現在のセッションまたは接続に関連付けるコンテキスト値を保持するための、varbinary または binary 変数を指定します。
解説
すべての SET ステートメントと同様に、SET CONTEXT_INFOは現在のセッションに影響します。 現在のセッションのコンテキスト情報を取得するには、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