sp_set_session_context (Transact-SQL)
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Microsoft Fabric 中的 SQL 分析端點 Microsoft Fabric 中的倉儲
在工作階段內容中設定機碼/值組。
語法
sp_set_session_context
[ @key = ] N'key'
, [ @value = ] 'value'
[ , [ @read_only = ] read_only ]
[ ; ]
引數
[ @key = ] N'key'
要設定的索引鍵。 @key為沒有預設值的 sysname。 金鑰大小上限為 128 個字節。
[ @value = ] '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
。
EXEC sys.sp_set_session_context @key = N'language', @value = 'English';
SELECT SESSION_CONTEXT(N'language');
下列範例示範如何使用選擇性唯讀旗標。
EXEC sys.sp_set_session_context @key = N'user_id', @value = 4, @read_only = 1;
B. 設定並傳回用戶端相互關聯標識碼
下列範例示範如何使用 值12323ad
來設定和擷取名為client_correlation_id
的會話內容索引鍵。
設定 值。
EXEC sp_set_session_context 'client_correlation_id', '12323ad';
擷取值。
SELECT SESSION_CONTEXT(N'client_correlation_id');