我们希望在一个数据库(A)上运行一个触发器,该数据库在另一个数据库(B)上调用存储过程。
CREATE TRIGGER trg_A ON TableA FOR INSERT AS BEGIN EXEC DatabaseB.dbo.stp_B END
我们希望在DatabaseA上使用UserA作为LoginA。我们在DatabaseB上也有UserB和UserB。
我们怎样才能做到这一点?
目前我们收到此错误消息
The server principal "..." is not able to access the database "DatabaseB" under the current security context.
我们尝试了WITH EXECUTE AS 'UserB'
,没有运气。
答案 0 :(得分:1)
有趣的问题。你这书呆子,骂了我一顿。我测试了很多不同的场景。
这些失败了:
我能让触发器工作的唯一方法是在DatabaseB中为LoginA创建用户并授予执行DatabaseB存储过程的权限。