sp_set_session_context (Transact-SQL)
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス
セッション コンテキストにキーと値のペアを設定します。
構文
sp_set_session_context
[ @key = ] N'key'
, [ @value = ] 'value'
[ , [ @read_only = ] read_only ]
[ ; ]
引数
[ @key = ] N'key'
設定されているキー。 @key は既定 sysname です。 キーの最大サイズは 128 バイトです。
[ @value = ] 'value'
指定したキーの値。 @value は sql_variantで、既定値は NULL
です。 NULL
値を設定すると、メモリが解放されます。 最大サイズは 8,000 バイトです。
[ @read_only = ] read_only
論理接続で指定したキーを変更できるかどうかを示すフラグ。 @read_only は bit 既定値は 0
です。
1
場合、指定したキーの値は、この論理接続で再度変更することはできません。0
場合は、値を変更できます。
アクセス許可
すべてのユーザーは、各自のセッションのセッション コンテキストを設定できます。
解説
他のストアド プロシージャと同様に、リテラルと変数 (式や関数呼び出しではなく) のみをパラメーターとして渡すことができます。
セッション コンテキストの合計サイズは 1 MB に制限されます。 この制限を超える値を設定すると、ステートメントは失敗します。 sys.dm_os_memory_objects (Transact-SQL) で全体的なメモリ使用量を監視できます。
sys.dm_os_memory_cache_counters (Transact-SQL) を次のように照会することで、全体的なメモリ使用量を監視できます。
SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'CACHESTORE_SESSION_CONTEXT';
例
A. セッション コンテキストを設定して返す
次の例は、 language
という名前のセッションのコンテキスト キーを設定して返し、値を English
する方法を示しています。
EXEC sys.sp_set_session_context @key = N'language', @value = 'English';
SELECT SESSION_CONTEXT(N'language');
次の例では、省略可能な読み取り専用フラグの使用を示しています。
EXEC sys.sp_set_session_context @key = N'user_id', @value = 4, @read_only = 1;
B. クライアントの関連付け ID を設定して返す
次の例は、 client_correlation_id
という名前のセッション コンテキスト キーを設定および取得し、値を 12323ad
に設定する方法を示しています。
値を設定します。
EXEC sp_set_session_context 'client_correlation_id', '12323ad';
値を取得します。
SELECT SESSION_CONTEXT(N'client_correlation_id');