适用于:SQL Server 2016 (13.x) 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
返回当前会话上下文中指定键的值。 该值是使用 sp_set_session_context 过程设置的。
语法
SESSION_CONTEXT(N'key')
参数
“key”
要检索的值的键。 键 为 sysname。
返回类型
sql_variant
返回值
与会话上下文中的指定键关联的值,或者 NULL
如果没有为该键设置任何值。
权限
任何用户都可以读取其会话的会话上下文。
备注
的 MARS 行为 SESSION_CONTEXT
类似于 CONTEXT_INFO
. 如果 MARS 批处理设置键值对,则新值不会在同一连接上在其他 MARS 批处理中返回,除非在设置新值完成的批处理之后启动。 如果多个 MARS 批处理在连接上处于活动状态,则无法将值设置为 read_only
。 这可以防止争用条件和不确定的值 获胜。
示例
下面的简单示例将键 user_id
的会话上下文值设置为 4,然后使用 SESSION_CONTEXT
函数检索值。
EXECUTE sp_set_session_context 'user_id', 4;
SELECT SESSION_CONTEXT(N'user_id');
已知问题
問题 | 发现日期 | 状态 | 解决日期 |
---|---|---|---|
在某些情况下, SESSION_CONTEXT 函数可能会出现访问冲突(AV)异常。 当会话重置以供重用时, SESSION_CONTEXT 当函数在并行执行计划中运行时,可能会遇到 AV 异常或错误的结果。SQL Server 2019 (15.x) CU 14 中引入的修复程序解决了并行计划中出现错误的结果问题 SESSION_CONTEXT ,后来发现在某些情况下会导致 AV 异常。若要缓解此问题,可以启用跟踪标志 11024 作为启动、全局或会话跟踪标志。 此跟踪标志强制 SESSION_CONTEXT 串行执行,防止其参与并行查询计划。适用于: SQL Server 2019 (15.x) CU 14 及更高版本。 |
2022 年 1 月 | 具有解决方法 |