我在同一个 SQL Server 实例中有两个数据库 A 和 B。我需要编写一个触发器——更新数据库 B 中的表后,它将从数据库 A 的几个表中获取数据,然后在数据库 B 的某个表中插入数据..问题是将访问数据库B的用户无权访问数据库A ..如果我用'sa'帐户编写触发器,当用户在数据库B中插入一些数据时它会起作用吗?还让我知道如果数据库 A 位于不同的 SQL Server 中我该怎么办?
问问题
613 次
1 回答
0
它可以工作,但你必须做一些事情才能到达那里。这是最简单的方法(尽管不一定是最好的):
将两个数据库的所有者设置为“sa”。
为两个数据库打开 CROSS-DATABASE 链接。
为源数据库 (B) 打开 TRUSTWORTHY。
编辑触发器并
WITH EXECUTE AS OWNER
在 FOR 子句之前添加。
请注意,虽然这有效,但它具有重要的安全考虑(特别是#2 和#3)。这是解释此方法和其他一些方法以及一些安全问题的链接:http: //msdn.microsoft.com/en-us/library/ms188304.aspx
于 2013-06-24T17:06:40.443 回答