0

假设我正在调用存储过程并发送一些参数。存储过程将更新一个表,并且该表有一个触发器。因此,当存储过程更新表时,我想要哪个用户正在更新表,但我没有使用 sql server 用户名,而是将用户名发送给将更新表的 SP。所以在更新之前,我可以将该用户名存储在本地临时表中,并从触发器中查询该本地临时表以获取该用户名。我希望这是可能的,但我想要其他好的选择来完成这项工作。所以请分享想法。谢谢

4

1 回答 1

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));
于 2013-01-17T08:07:27.350 回答