sql >> データベース >  >> RDS >> Sqlserver

SQL Serverのセッションコンテキストでのキーと値のペアの設定(sp_set_session_context)

    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. 
    

    1. HikariCPPostgresqlドライバーがJDBCURLを受け入れないと主張

    2. ダウンロードするファイルがない場合にSSISFTPタスクが失敗しないようにするにはどうすればよいですか?

    3. データが含まれているときに列タイプを数値からvarchar2に変更するOracleSQL

    4. Base64イメージがデータベースから選択してエンコードするときに検出される速度低下