sp_set_session_context (Transact-SQL)
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure конечную точку аналитики SQL Azure Synapse Analytics в хранилище Microsoft Fabric в Microsoft Fabric
Задает пару "ключ-значение" в контексте сеанса.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_set_session_context
[ @key = ] N'key'
, [ @value = ] 'value'
[ , [ @read_only = ] read_only ]
[ ; ]
Аргументы
[ @key = ] N'key'
Заданный ключ. @key — это sysname без значения по умолчанию. Максимальный размер ключа — 128 байт.
[ @value = ] 'value'
Значение заданного ключа. @value sql_variant с значением по умолчаниюNULL
. Задание значения NULL
освобождает память. Максимальный размер 8 000 байт.
[ @read_only = ] read_only
Флаг, указывающий, можно ли изменить указанный ключ в логическом соединении. @read_only бит с значением по умолчанию0
.
- Если
1
значение указанного ключа невозможно изменить повторно в этом логическом соединении. - Если
0
значение может быть изменено.
Разрешения
Любой пользователь может задать контекст сеанса для сеанса.
Замечания
Как и другие хранимые процедуры, в качестве параметров могут передаваться только литералы и переменные (а не выражения или вызовы функций).
Общий размер контекста сеанса ограничен 1 МБ. Если задать значение, которое приводит к превышению этого ограничения, оператор завершается сбоем. Вы можете отслеживать общее использование памяти в sys.dm_os_memory_objects.
Вы можете отслеживать общее использование памяти, запрашивая sys.dm_os_memory_cache_counters следующим образом:
SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'CACHESTORE_SESSION_CONTEXT';
Примеры
А. Установка и возврат контекста сеанса
В следующем примере показано, как задать и затем вернуть ключ контекста сеанса с именем language
со значением English
.
EXEC sys.sp_set_session_context @key = N'language', @value = 'English';
SELECT SESSION_CONTEXT(N'language');
В следующем примере показано использование необязательного флага только для чтения.
EXEC sys.sp_set_session_context @key = N'user_id', @value = 4, @read_only = 1;
B. Установка и возврат идентификатора корреляции клиента
В следующем примере показано, как задать и получить ключ контекста сеанса с именем client_correlation_id
со значением 12323ad
.
Задайте значение.
EXEC sp_set_session_context 'client_correlation_id', '12323ad';
Получите значение.
SELECT SESSION_CONTEXT(N'client_correlation_id');