Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2016 (13.x) и более поздних
версий База данных SQL Azure Управляемый экземпляр SQL Azure
конечную точку аналитики SQL Azure Synapse Analytics
в хранилище Microsoft Fabric
в Microsoft Fabric
Возвращает значение указанного ключа в контексте текущего сеанса. Значение задается с помощью процедуры sp_set_session_context .
Соглашения о синтаксисе Transact-SQL
Синтаксис
SESSION_CONTEXT(N'key')
Аргументы
"ключ"
Ключ извлекаемого значения. ключ — sysname.
Типы возвращаемых данных
sql_variant
Возвращаемое значение
Значение, связанное с указанным ключом в контексте сеанса, или NULL
если для этого ключа не задано значение.
Разрешения
Любой пользователь может считывать контекст своего сеанса.
Замечания
Поведение MARS для SESSION_CONTEXT
', похожее на поведение CONTEXT_INFO
. Если пакет MARS задает пару "ключ-значение", новое значение не возвращается в других пакетах MARS в том же соединении, если только они не запущены после выполнения пакета, задающего новое значение. Если несколько пакетов MARS активны в соединении, значения не могут быть заданы как read_only
. Это предотвращает условия гонки и недетерминированность о том, какое значение выигрывает.
Примеры
Следующий простой пример задает значение контекста сеанса для ключа user_id
4, а затем использует SESSION_CONTEXT
функцию для получения значения.
EXECUTE sp_set_session_context 'user_id', 4;
SELECT SESSION_CONTEXT(N'user_id');
Известные проблемы
Проблема | Дата обнаружения | Состояние | Дата решения |
---|---|---|---|
Исключение "Нарушение доступа" (AV) может возникать с SESSION_CONTEXT функцией в определенных условиях. Вы можете столкнуться с исключениями AV или неправильными результатами, когда SESSION_CONTEXT функция выполняется в параллельном плане выполнения при сбросе сеанса для повторного использования.Исправление, которое было введено в SQL Server 2019 (15.x) с накопительным пакетом обновления 14 (CU 14) для решения проблемы с неправильными результатами в SESSION_CONTEXT параллельных планах, позже было обнаружено, что это приведет к возникновению исключений AV в определенных условиях.Чтобы устранить эту проблему, можно включить флаг трассировки 11042 в качестве флага трассировки запуска, глобального или сеанса. Этот флаг трассировки принудительно SESSION_CONTEXT выполняется последовательно, предотвращая его участие в параллельных планах запросов.Применимо к: SQL Server 2019 (15.x) CU 14 и более поздних версий. |
Январь 2022 года | Существует обходной путь |