SET CONTEXT_INFO (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

最多可讓 128 個位元組的二進位資訊與目前的工作階段或連接發生關聯。

Transact-SQL 語法慣例

Syntax

  
SET CONTEXT_INFO { binary_str | @binary_var }  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

binary_str

這是要與目前工作階段或連線建立關聯的 binary 常數,或能夠隱含地轉換成 binary 的常數。

@binary_var

這是用來存放要與目前工作階段或連線的內容值建立關聯的 varbinarybinary 變數。

備註

如同所有 SET 語句,SET CONTEXT_INFO會影響目前的會話。 擷取目前工作階段的內容資訊,最好的方法是使用 CONTEXT_INFO 函數。 工作階段內容資訊也會儲存在 context_info 下列系統檢視中的數據行中:

  • sys.dm_exec_requests
  • sys.dm_exec_sessions
  • sys.sysprocesses (已淘汰)

在使用者自訂函數中,不能指定 SET CONTEXT_INFO。 您無法將 NULL 值提供給 SET CONTEXT_INFO,因為持有 NULL 值的檢視不允許 NULL 值。

SET CONTEXT_INFO 不接受常數或變數名稱以外的運算式。 若要將內容資訊設為函式呼叫的結果,您必須先將函式呼叫的結果併入 binaryvarbinary 變數中。

當您在預存程序或觸發程序中發出 SET CONTEXT_INFO 時,和其他 SET 陳述式不同的是,在預存程序或觸發程序完成之後,為內容資訊所設定的新值將保存下來。

範例

A. 使用常數設定內容資訊

下列範例會示範 SET CONTEXT_INFO,它將設定這個值及顯示其結果。 查詢 sys.dm_exec_sessions 需要 SELECT 和 VIEW SERVER STATE 許可權,而使用 CONTEXT_INFO 函式則不需要。

SET CONTEXT_INFO 0x01010101;  
GO  
SELECT context_info   
FROM sys.dm_exec_sessions  
WHERE session_id = @@SPID;  
GO  

B. 使用函式設定內容資訊

下列範例會示範使用函式的輸出來設定內容值,其中來自函式的值必須先放置在 binary 變數中。

DECLARE @BinVar varbinary(128);  
SET @BinVar = CAST(REPLICATE( 0x20, 128 ) AS varbinary(128) );  
SET CONTEXT_INFO @BinVar;  
  
SELECT CONTEXT_INFO() AS MyContextInfo;  
GO