sp_set_session_context (Transact-SQL)

適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲

在工作階段內容中設定機碼/值組。

Transact-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的會話內容索引鍵。

  1. 設定值。

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. 擷取值。

    SELECT SESSION_CONTEXT(N'client_correlation_id');