SET CONTEXT_INFO (Transact-SQL)
Связывает до 128 байт бинарных данных с текущим сеансом или соединением.
Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии). |
Cинтаксические обозначения в 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
См. также
Справочник
sys.dm_exec_requests (Transact-SQL)