1

我在同一个 SQL Server 实例中有两个数据库 A 和 B。我需要编写一个触发器——更新数据库 B 中的表后,它将从数据库 A 的几个表中获取数据,然后在数据库 B 的某个表中插入数据..问题是将访问数据库B的用户无权访问数据库A ..如果我用'sa'帐户编写触发器,当用户在数据库B中插入一些数据时它会起作用吗?还让我知道如果数据库 A 位于不同的 SQL Server 中我该怎么办?

4

1 回答 1

0

可以工作,但你必须做一些事情才能到达那里。这是最简单的方法(尽管不一定是最好的):

  1. 将两个数据库的所有者设置为“sa”。

  2. 为两个数据库打开 CROSS-DATABASE 链接。

  3. 为源数据库 (B) 打开 TRUSTWORTHY。

  4. 编辑触发器并WITH EXECUTE AS OWNER在 FOR 子句之前添加。

请注意,虽然这有效,但它具有重要的安全考虑(特别是#2 和#3)。这是解释此方法和其他一些方法以及一些安全问题的链接:http: //msdn.microsoft.com/en-us/library/ms188304.aspx

于 2013-06-24T17:06:40.443 回答