SET CONTEXT_INFO (Transact-SQL)
最多可讓 128 個位元組的二進位資訊與目前的工作階段或連接發生關聯。
語法
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
請參閱
參考
SET (Transact-SQL)
sys.dm_exec_requests
sys.dm_exec_sessions
CONTEXT_INFO (Transact-SQL)