sp_set_session_context (Transact-SQL)
適用於: sql Server 2016 (13.x) 和更新版本的
Azure SQL 資料庫
Azure SQL 受控執行個體
Microsoft Fabric Microsoft Fabric
倉儲中的 Azure Synapse Analytics
SQL 分析端點
在工作階段內容中設定機碼/值組。
語法
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 (Transact-SQL) 中監視整體記憶體使用量。
您可以藉由查詢 sys.dm_os_memory_cache_counters (Transact-SQL) 來監視整體記憶體使用量, 如下所示:
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');