SET CONTEXT_INFO (Transact-SQL)

将最多 128 字节的二进制信息与当前会话或连接关联。

主题链接图标Transact-SQL 语法约定

语法

SET CONTEXT_INFO { binary_str | @binary_var }

参数

  • binary_str
    一个 binary 常量或可以隐式转换为 binary 的常量,用于与当前会话或连接关联。

  • **@**binary_var
    varbinary 或 binary 变量,保存用于与当前会话或连接关联的上下文值。

注释

检索当前会话的上下文信息的首选方式是使用 CONTEXT_INFO 函数。会话上下文信息也存储在以下系统视图的 context_info 列中:

  • sys.dm_exec_requests

  • sys.dm_exec_sessions

  • sys.sysprocesses

不能在用户定义函数中指定 SET CONTEXT_INFO。不能向 SET CONTEXT_INFO 提供一个 NULL 值,因为保存值的视图不允许使用 NULL 值。

SET CONTEXT_INFO 不接受常量名或变量名以外的表达式。若要将上下文信息设置为函数调用的结果值,必须先将函数调用的结果值包括在 binary 或 varbinary 变量中。

与其他 SET 语句不同,在存储过程或触发器中发出 SET CONTEXT_INFO 时,为上下文信息设置的新值在存储过程或触发器完成后会继续存在。

示例

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