次の方法で共有


SET CONTEXT_INFO (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

  
SET CONTEXT_INFO { binary_str | @binary_var }  

引数

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