SQL Serverでは、sp_set_session_context
を使用できます。 セッションコンテキストでキーと値のペアを設定するためのストアドプロシージャ。
これらのキーと値のペアは、SQLServerへの接続が閉じるまでセッションコンテキストに残ります。これらの値は、セッションの存続期間中、ストアドプロシージャやその他のT-SQLコードで使用できます。
セッション状態を維持するためのこのメソッドは、SQL Server 2016で最初に導入されました。そのリリースより前は、SET CONTEXT_INFO
を使用する必要がありました。 、これは、セッション状態を保存するための同様の、しかしはるかに制限された方法を提供します。
例1-値を設定する
sp_set_session_context
の使用方法を示す例を次に示します。 キーと値のペアを設定します。
EXEC sp_set_session_context @key = N'user_id', @value = 15;
次の構文を使用することもできます:
EXEC sp_set_session_context 'user_id', 15;
設定できるオプションの読み取り専用フラグもあります。例については、以下を参照してください。
例2–値を読み取る
SESSION_CONTEXT()
を使用できます キーの値を読み取る関数。
前の例で設定した値の読み方は次のとおりです。
SELECT SESSION_CONTEXT(N'user_id') AS user_id;
結果:
+-----------+ | user_id | |-----------| | 15 | +-----------+
例3–値を更新する
読み取り専用として指定していない限り、値を更新できます。
EXEC sp_set_session_context 'user_id', 73; SELECT SESSION_CONTEXT(N'user_id') AS user_id;
結果:
+-----------+ | user_id | |-----------| | 73 | +-----------+
例4–読み取り専用に設定
前述のように、設定可能なオプションの読み取り専用フラグもあります。 1
の値 読み取り専用に設定し、値を0
(デフォルト)は読み取り専用ではありません。
読み取り専用に設定すると、SQLServerを切断して再接続しないと値を更新できません。
読み取り専用フラグを設定する例を次に示します。
EXEC sp_set_session_context @key = N'user_id', @value = 15, @read_only = 1; SELECT SESSION_CONTEXT(N'user_id') AS user_id;
結果:
+-----------+ | user_id | |-----------| | 15 | +-----------+
それでは、値を変更してみましょう:
EXEC sp_set_session_context 'user_id', 73;
結果:
Msg 15664, Level 16, State 1, Line 1 Cannot set key 'user_id' in the session context. The key has been set as read_only for this session.