SET CONTEXT_INFO (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
最多可讓 128 個位元組的二進位資訊與目前的工作階段或連接發生關聯。
語法
SET CONTEXT_INFO { binary_str | @binary_var }
引數
binary_str
這是要與目前工作階段或連線建立關聯的 binary 常數,或能夠隱含地轉換成 binary 的常數。
@binary_var
這是用來存放要與目前工作階段或連線的內容值建立關聯的 varbinary 或 binary 變數。
備註
如同所有 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 不接受常數或變數名稱以外的運算式。 若要將內容資訊設為函式呼叫的結果,您必須先將函式呼叫的結果併入 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