共用方式為


SESSION_CONTEXT (Transact-SQL)

適用於: SQL Server 2016 (13.x) 及以後版本 Azure SQL Database AzureSQL Managed InstanceAzure Synapse AnalyticsSQL Analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

傳回目前工作階段內容中指定索引鍵的值。 值是使用 sp_set_session_context 程式來設定。

Transact-SQL 語法慣例

語法

SESSION_CONTEXT(N'key')

引數

'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');

已知問題

問題 發現日期 地位 解決日期
在某些情況下,函式可能會發生 SESSION_CONTEXT 存取違規 (AV) 例外狀況。 當會話重設以供重複使用時, SESSION_CONTEXT 當函式在平行執行計劃中執行時,可能會遇到AV例外狀況或錯誤的結果。

SQL Server 2019 (15.x) CU 14 中引進的修正,以解決平行計劃內的錯誤結果問題 SESSION_CONTEXT ,稍後發現在某些情況下會導致 AV 例外狀況。

若要減輕此問題,您可以啟用追蹤旗標 11042 作為啟動、全域或會話追蹤旗標。 此追蹤旗標會 SESSION_CONTEXT 強制序列執行,使其無法參與平行查詢計劃。

適用於: SQL Server 2019 (15.x) CU 14 和更新版本。
2022 年 1 月 有因應措施