假设我正在调用存储过程并发送一些参数。存储过程将更新表,并为该表提供触发器。所以当存储过程更新表然后我想要哪个用户正在更新表但我不使用sql server用户名而不是我将用户名发送给将更新表的SP。因此,在更新之前,我可以将该用户名存储在本地临时表中,并从触发器查询该本地临时表以获取该用户名。我希望这是可能的,但我想要其他好的选择来实现这项工作。所以请分享想法。感谢
答案 0 :(得分:0)
您可以使用SET CONTEXT_INFO将过程中的用户名编码到会话中 这可以通过CONTEXT_INFO
在触发器中读取这是并发安全的:每个会话/呼叫都与其他任何会话/呼叫隔离 而且不需要临时表等。
DECLARE @context varbinary(100) = CAST('foobar' AS varbinary(100));
SET CONTEXT_INFO @context;
SELECT CAST(CONTEXT_INFO() AS varchar(100));