適用於: SQL Server 2016 (13.x) 及以後版本
Azure SQL Database Azure
SQL Managed Instance
Azure Synapse Analytics
SQL Analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
傳回目前工作階段內容中指定索引鍵的值。 值是使用 sp_set_session_context 程式來設定。
語法
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 月 | 有因應措施 |