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


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.

  1. Задайте значение.

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. Получите значение.

    SELECT SESSION_CONTEXT(N'client_correlation_id');