適用於: 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
[ @key = ] N'key'
, [ @value = ] 'value'
[ , [ @read_only = ] read_only ]
[ ; ]
引數
重要
擴充預存程式的自變數必須依特定順序輸入,如 語法 一節所述。 如果參數依序輸入,就會發生錯誤訊息。
[ @key = ] N'key'
要設定的索引鍵。 @key為沒有預設值的 sysname。 金鑰大小上限為 128 個字節。
[ @value = ] '值'
指定索引鍵的值。
@value是sql_variant,預設值為 NULL。 設定的值 NULL 會釋放記憶體。 大小上限為8,000個字節。
[ @read_only = ] read_only
旗標,指出是否可以在邏輯連接上變更指定的索引鍵。
@read_only 是位,預設值為 0。
- 如果
1為 ,則此邏輯連線上無法再次變更指定索引鍵的值。 - 如果
0為 ,則可以變更值。
權限
任何使用者都可以為其會話設定會話內容。
備註
與其他預存程式一樣,只有常值和變數(不是表達式或函數調用)可以當做參數傳遞。
會話內容的總大小限制為 1 MB。 如果您設定的值會導致超過此限制,語句就會失敗。 您可以在 sys.dm_os_memory_objects 中監視整體記憶體使用量。
您可以查詢 sys.dm_os_memory_cache_counters 來監視整體記憶體使用量,如下所示:
SELECT *
FROM sys.dm_os_memory_cache_counters
WHERE type = 'CACHESTORE_SESSION_CONTEXT';
範例
A. 設定並傳回會話內容
下列範例示範如何設定,然後傳回名為 language的工作階段內容索引鍵,其值為 English。
EXECUTE sys.sp_set_session_context
@key = N'language',
@value = 'English';
SELECT SESSION_CONTEXT(N'language');
下列範例示範如何使用選擇性唯讀旗標。
EXECUTE sys.sp_set_session_context
@key = N'user_id',
@value = 4,
@read_only = 1;
B. 設定並傳回用戶端相互關聯標識碼
下列範例示範如何使用 值client_correlation_id來設定和擷取名為12323ad的會話內容索引鍵。
設定 值。
EXECUTE sp_set_session_context 'client_correlation_id', '12323ad';擷取值。
SELECT SESSION_CONTEXT(N'client_correlation_id');