共用方式為


SET CONTEXT_INFO (Transact-SQL)

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

主題連結圖示Transact-SQL 語法慣例

語法

SET CONTEXT_INFO { binary_str | @binary_var }

引數

  • binary_str
    這是要關聯於目前工作階段或連接的 binary 常數,或能夠隱含地轉換成 binary 的常數。

  • **@**binary_var
    這是用來存放要關聯於目前工作階段或連接的內容值之 varbinary 或 binary 變數。

備註

擷取目前工作階段的內容資訊,最好的方法是使用 CONTEXT_INFO 函數。工作階段內容資訊也儲存在下列系統檢視的 context_info 資料行中:

  • sys.dm_exec_requests

  • sys.dm_exec_sessions

  • sys.sysprocesses

在使用者自訂函數中,不能指定 SET CONTEXT_INFO。您不能提供 Null 值給 SET CONTEXT_INFO,因為存放值的檢視不接受 Null 值。

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

當您在預存程序或觸發程序中發出 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