CONTEXT_INFO 和 SESSION_CONTEXT的問題小記

CONTEXT_INFO 和 SESSION_CONTEXT的問題小記

最近在處理一些與Database中Trigger有關的事
發現CONTEXT_INFO總是GET不到Transaction中的UserID
查了查後才發現Transaction是用"sys.sp_set_session_context"來加入UserID的資訊
用CONTEXT_INFO當然是GET不到的
(CONTEXT_INFO可以理解為SESSION_CONTEXT的前身,SESSION_CONTEXT解決了一些在CONTEXT_INFO中會出現的問題及不便)
所以最後用"SELECT SESSION_CONTEXT(N'UserID')"便成功得到了UserID的資訊了

最後小記:
由於Session context由Key-Value組成
避免Key轉變而令Trigger未能成功運作
最後還是再sp_set_session_context前加上了
SET @ContextInfo = CONVERT(varbinary(60), @UserID)
SET CONTEXT_INFO @ContextInfo;

然後在Get的位置進行Convert取回Value (要注意CONTEXT_INFO存的是Binary)
CONVERT(VARCHAR(16),CONTEXT_INFO())
 

另外對於ContextInfo, SessionContext和Transaction中的處理及運作感覺仍需進一步了解一下
也許以後再有一篇講述有關的筆記吧