如何在没有访问权限的情况下从不同的sql server数据库中获取数据?

时间:2013-06-24 16:57:07

标签: sql-server database triggers

我在同一个SQL Server实例中有两个数据库A和B.我需要编写一个触发器 - 在更新数据库B中的表后,它将从数据库A的几个表中获取数据,然后在某些表中插入数据数据库B ..问题是将访问数据库的用户B无法访问数据库A ..如果我用' sa'帐户,当用户在数据库B中插入一些数据时它会工作吗?另请告诉我,如果数据库A位于不同的SQL Server中,我还需要做什么?

1 个答案:

答案 0 :(得分:0)

可以 工作,但你必须做一些事情来实现目标。这是最简单的方法(虽然不一定是最好的):

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

  2. 为两个数据库启用CROSS-DATABASE链接。

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

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

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