适用于:sql Server 2016 (13.x) 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
SQL 分析终结点Microsoft Fabric
Warehouse 中的
Microsoft Fabric SQL 数据库在 Microsoft Fabric 中的 fabric SQL 数据库
在会话上下文中设置键值对。
语法
sp_set_session_context
[ @key = ] N'key'
, [ @value = ] 'value'
[ , [ @read_only = ] read_only ]
[ ; ]
参数
重要
扩展存储过程的参数必须按特定顺序输入,如 语法 节中所述。 如果参数按顺序输入,则会出现错误消息。
[ @key = ] N'key'
要设置的键。 @key为 sysname,没有默认值。 键的最大大小为 128 个字节。
[ @value = ] “价值”
指定键的值。
@value为sql_variant,默认值为 NULL. 设置释放内存的值 NULL 。 最大大小为 8,000 个字节。
[ @read_only = ] read_only
一个标志,指示是否可以在逻辑连接上更改指定的键。
@read_only是位,默认值为 0.
- 如果
1指定键的值不能在此逻辑连接上再次更改。 - 如果
0可以更改该值。
权限
任何用户都可以设置其会话的会话上下文。
备注
与其他存储过程一样,只有文本和变量(而非表达式或函数调用)才能作为参数传递。
会话上下文的总大小限制为 1 MB。 如果设置的值导致超出此限制,语句将失败。 可以在sys.dm_os_memory_objects中监视总体内存使用情况。
可以通过查询 sys.dm_os_memory_cache_counters 来监视总体内存使用情况,如下所示:
SELECT *
FROM sys.dm_os_memory_cache_counters
WHERE type = 'CACHESTORE_SESSION_CONTEXT';
示例
A. 设置并返回会话上下文
以下示例演示如何设置并返回名为 language 的会话上下文键,其值为 English< a1/>。
EXECUTE sys.sp_set_session_context
@key = N'language',
@value = 'English';
SELECT SESSION_CONTEXT(N'language');
以下示例演示了可选只读标志的用法。
EXECUTE sys.sp_set_session_context
@key = N'user_id',
@value = 4,
@read_only = 1;
B. 设置并返回客户端关联 ID
以下示例演示如何设置和检索名为 <client_correlation_id< a1/>。
设置 值。
EXECUTE sp_set_session_context 'client_correlation_id', '12323ad';检索值。
SELECT SESSION_CONTEXT(N'client_correlation_id');