跨数据库所有权链接是SQL Server中相对比较新的特性,是在SQL Server2000 Service Pack3a中引入的。跨数据库所有权链接是传统的权限链的扩展,它使得权限链可以作用于多个数据库之间。如果没有跨数据库所有权链接,那么要通过“数据库名.架构名.对象名”来访问另一个数据库中的对象,就需要授予用户对于对象必需的权限,请看下面的代码片段。如果存储过程的编写如下,就需要用户拥有SELECT权限。
跨数据库所有权链接是数据库级别的设置,对于所有数据库默认都是禁用的。如需启用,对于存储过程所在的数据库和存储过程中涉及的表所在的数据库都需要启用跨数据库所有权链接。你可以通过多种方式查看数据库所有权链接是否启用,最简单的方法是查询sys.databases这个视图的is db chaining on列。如果此列的值为0,那么跨数据库所有权限链接的禁用的;反之如果为1,那么跨数据库所有权链接是启用的。
数据库所有权限链接的状态也可以通过数据库的属性窗口进行查看,这需要通过“对象资源管理器”连接到数据库实例。
(1)选择所需查看的数据库。
(2)右击数据库,从上下文菜单中选择“属性”。
(3)打开“选项”页,在“其他选项”下,滚动到“杂项”部分。
(4)在“杂项”部分,可以看到“跨数据库所有权链接已启用”,这个选项是灰的,你只能通过T-SQL的ALTER DATABASE语句来改变这个设置。
为启用跨数据库所有权链接,需要使用T-SQL的ALTER DATABASE语句来开启DB CHAINING选项,如下面的代码片段所示。你需要使用如下所示的两条ALTER DATABASE语句来开启两个数据库的跨数据库所有权链接选项,以便前面代码中的存储过程能够正确工作。
为了使跨数据库所有权链接能够正常工作,还需要授予额外的权限,那就是需要将第一个数据库中的用户添加到第一个数据库中。第二个数据库中的用户不需要任何额外权限,仅仅需要通过和第一个数据库中的用户有相同的登录名来进行匹配,或是在第二个数据库中来启用来宾账户。由于启用来宾账户可能会授予其他用户所不需要的权限,因此并不推荐采用这种方式。
虽然跨数据库链接是允许在相关数据库之间进行查询的一种方便的方法,但是应该谨慎使用,因为这种方法可能导致意外后果。假设一个恶意的小数据库的所有者与信用卡数据库在同一个实例中。
★关于WorkWin公司电脑监控软件★
WorkWin的使命是打造Work用途的Windows 电脑系统,有效规范员工上网行为,让老板知道员工每天在做什么(监控包括屏幕、上网在内的一举一动),限制员工不能做什么(禁止网购、游戏、优盘等)。
WorkWin基于纯软件设计,非常容易使用,无需添加或改动任何硬件,使用一台管理机监控全部员工机电脑。历经南京网亚十余年精心打造,此时此刻每天都有成千上万企业电脑正在运行WorkWin,选择WorkWin选择“赢”。
版权所有,南京网亚计算机有限公司 。本文链接地址: 跨数据库所有权链接