sp_set_session_context (Transact-SQL)

适用于:SQL Server 2016 (13.x) 及更高版本Azure SQL 数据库Azure SQL 托管实例Azure 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< a1/>。

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

以下示例演示如何设置和检索名为 <a0/> 的会话上下文键,其值为 12323ad< a1/>。

  1. 设置 值。

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. 检索值。

    SELECT SESSION_CONTEXT(N'client_correlation_id');