次の方法で共有


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 のウェアハウス

セッション コンテキストにキーと値のペアを設定します。

Transact-SQL 構文表記規則

構文

sp_set_session_context
    [ @key = ] N'key'
    , [ @value = ] 'value'
    [ , [ @read_only = ] read_only ]
[ ; ]

引数

[ @key = ] N'key'

設定されているキー。 @key は既定 sysname です。 キーの最大サイズは 128 バイトです。

[ @value = ] 'value'

指定したキーの値。 @valuesql_variantで、既定値は NULL です。 NULL値を設定すると、メモリが解放されます。 最大サイズは 8,000 バイトです。

[ @read_only = ] read_only

論理接続で指定したキーを変更できるかどうかを示すフラグ。 @read_onlybit 既定値は 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 に設定する方法を示しています。

  1. 値を設定します。

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. 値を取得します。

    SELECT SESSION_CONTEXT(N'client_correlation_id');