我在同一个SQL Server实例中有两个数据库A和B.我需要编写一个触发器 - 在更新数据库B中的表后,它将从数据库A的几个表中获取数据,然后在某些表中插入数据数据库B ..问题是将访问数据库的用户B无法访问数据库A ..如果我用' sa'帐户,当用户在数据库B中插入一些数据时它会工作吗?另请告诉我,如果数据库A位于不同的SQL Server中,我还需要做什么?
答案 0 :(得分:0)
可以 工作,但你必须做一些事情来实现目标。这是最简单的方法(虽然不一定是最好的):
将两个数据库的所有者设置为“sa”。
为两个数据库启用CROSS-DATABASE链接。
打开源数据库(B)的TRUSTWORTHY。
编辑触发器并在FOR子句之前添加WITH EXECUTE AS OWNER
。
请注意,虽然这有效,但它具有重要的安全性考虑因素(特别是#2和#3)。以下是解释此问题以及其他一些方法和一些安全问题的链接:http://msdn.microsoft.com/en-us/library/ms188304.aspx