背景资料:
SYSTEM_USER
在触发器中调用时,结果总是相同的。UserId
每次完成 DML 时都会为其提供一个字符串(仅在存储过程中完成)。我遇到的问题是,当用户删除记录时,我想知道是谁做的。因为它将通过相同的登录完成,我不想看到所有操作都是由服务完成的,我想看看是哪个用户完成的。这不是更新的问题,因为我们有ModifiedBy
将通过发送的UserId
更新来更新的列。
问题是:有没有办法在SYSTEM_USER
运行删除时设置或以其他方式将用户信息放入触发器中?
我现在拥有的“最佳”想法,虽然我不确定这是否是一个好主意,但在服务中,我检查当前UserId
是否以用户身份存在于数据库中,如果没有,则创建一个用户为他们反对。然后运行存储过程EXECUTE AS User = @UserId
。然后当 DML 在存储过程中完成并且触发器触发时,SYSTEM_USER
应该从EXECUTE AS
.