sp_set_session_context (Transact-SQL)
适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Microsoft Fabric 中的 SQL 分析终结点 Microsoft Fabric 中的仓库
在会话上下文中设置键值对。
语法
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中监视总体内存使用情况。
可以通过查询 sys.dm_os_memory_cache_counters 来监视总体内存使用情况,如下所示:
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
以下示例演示如何设置和检索名为 <12323ad
< a1/>。
设置 值。
EXEC sp_set_session_context 'client_correlation_id', '12323ad';
检索值。
SELECT SESSION_CONTEXT(N'client_correlation_id');