Поделиться через


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 не может быть задан в определенной пользователем функции. Нельзя применить значение NULL к SET CONTEXT_INFO, так как представления, хранящие значения, не допускают значения NULL.

SET CONTEXT_INFO не принимает другие выражения, нежели имена констант и переменных. Чтобы задать сведения о контексте результатом вызываемой функции, необходимо сначала назначить результат вызова функции в переменную типа binary или varbinary.

Если SET CONTEXT_INFO вызывается в сохраненной процедуре или триггере, то в отличие от других инструкций SET, для контекстных данных установится новое значение, сохраненное после завершения хранимой процедуры или триггера.

Примеры

А. Задание контекстных данных с помощью константы

Следующий пример демонстрирует использование 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

Б. Задание контекстных данных с помощью функции

Следующий пример демонстрирует задание контекстного значения, используя вывод функции, где значение от функции должно быть сначала помещено в переменную binary.

DECLARE @BinVar varbinary(128)
SET @BinVar = CAST(REPLICATE( 0x20, 128 ) AS varbinary(128) )
SET CONTEXT_INFO @BinVar

SELECT CONTEXT_INFO() AS MyContextInfo;
GO