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


SET CONTEXT_INFO (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Связывает до 128 байт бинарных данных с текущим сеансом или соединением.

Соглашения о синтаксисе Transact-SQL

Синтаксис

  
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_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  

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