【问题标题】:How to fetch data from a different sql server database without having access?如何在没有访问权限的情况下从不同的 sql server 数据库中获取数据?
【发布时间】:2013-06-24 16:57:06
【问题描述】:
我在同一个 SQL Server 实例中有两个数据库 A 和 B。我需要编写一个触发器 -- 更新数据库 B 中的表后,它将从数据库 A 的几个表中获取数据,然后在某个表中插入数据数据库B ..问题是将访问数据库B的用户无权访问数据库A ..如果我用'sa'帐户编写触发器,当用户在数据库B中插入一些数据时它会起作用吗?还请告诉我如果数据库 A 在不同的 SQL Server 中我该怎么办?
【问题讨论】:
标签:
sql-server
database
triggers
【解决方案1】:
它可以工作,但你必须做一些事情才能到达那里。这是最简单的方法(虽然不一定是最好的):
将两个数据库的所有者设置为“sa”。
为两个数据库启用 CROSS-DATABASE 链接。
为源数据库 (B) 开启 TRUSTWORTHY。
编辑触发器并在 FOR 子句前添加WITH EXECUTE AS OWNER。
请注意,虽然这可行,但它具有重要的安全考虑(尤其是#2 和#3)。这是一个解释此方法和其他一些方法以及一些安全问题的链接:http://msdn.microsoft.com/en-us/library/ms188304.aspx