SET CONTEXT_INFO (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL データベース

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 型の変数に関数呼び出しの結果を格納する必要があります。

ストアドプロシージャやトリガーで SETSET 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