适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 中的 SQL 数据库
将最多 128 字节的二进制信息与当前会话或连接关联。
语法
SET CONTEXT_INFO { binary_str | @binary_var }
参数
binary_str
一个 binary 常量或可以隐式转换为 binary 的常量,用于与当前会话或连接关联。
@binary_var
varbinary 或 binary 变量,保存用于与当前会话或连接关联的上下文值。
注解
像所有 SET 语句一样,影响 SET CONTEXT_INFO 当前会话。 获取当前会话上下文信息的首选方式是使用函数 CONTEXT_INFO 。 会话上下文信息也存储在 context_info 以下系统视图中的列中:
sys.dm_exec_requestssys.dm_exec_sessions-
sys.sysprocesses(已弃用)
SET CONTEXT_INFO 不能在用户自定义函数中指定。 你无法为 提供 NULL 值 SET CONTEXT_INFO ,因为包含该值的视图不允许 NULL 值。
SET CONTEXT_INFO 不接受除常量或变量名以外的表达式。 若要将上下文信息设置为函数调用的结果,必须先将函数调用的结果包括在 binary 或 varbinary 变量中。
当你在存储过程或触发器中发布 SETSET CONTEXT_INFO 时,与其他 SET 语句不同,上下文信息的新值在完成后依然存在。
示例
A. 使用常量设置上下文信息
以下示例通过设置值并显示结果来阐释 SET CONTEXT_INFO。 查询 sys.dm_exec_sessions 需要 SELECT 和 VIEW SERVER STATE 权限,而使用该 CONTEXT_INFO 函数则不需要。
SET CONTEXT_INFO 0x01010101;
GO
SELECT context_info
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID;
GO
B. 使用函数设置上下文信息
以下示例演示使用函数输出设置上下文值,其中函数的结果值必须先放到一个 binary 变量中。
DECLARE @BinVar varbinary(128);
SET @BinVar = CAST(REPLICATE( 0x20, 128 ) AS varbinary(128) );
SET CONTEXT_INFO @BinVar;
SELECT CONTEXT_INFO() AS MyContextInfo;
GO