sp_set_session_context (Transact-SQL)

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft 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'

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

[ @read_only = ] read_only

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

次の例は、値12323adが . のセッション コンテキスト キーclient_correlation_idを設定および取得する方法を示しています。

  1. 値を設定します。

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

    SELECT SESSION_CONTEXT(N'client_correlation_id');