Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2016 (13.x) и более поздние версии:
конечная точка аналитики SQL
Azure
Synapse Analytics в хранилище Microsoft
Fabric в базе данных SQL 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 года | Существует обходной путь |