SET CONTEXT_INFO (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

  
SET CONTEXT_INFO { binary_str | @binary_var }  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

binary_str

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

@binary_var

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

解説

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

  • sys.dm_exec_requests
  • sys.dm_exec_sessions
  • sys.sysprocesses (非推奨)

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

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

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

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

次の例では、SET CONTEXT_INFO に値を設定し、結果を表示します。 クエリをsys.dm_exec_sessions実行するには、Standard Edition LECT および VIEW Standard Edition RVER 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