适用于: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 过程设置的。
语法
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 异常。若要缓解此问题,可以启用跟踪标志 11042 作为启动、全局或会话跟踪标志。 此跟踪标志强制 SESSION_CONTEXT 串行执行,防止其参与并行查询计划。适用于: SQL Server 2019 (15.x) CU 14 及更高版本。 |
2022 年 1 月 | 具有解决方法 |