INF: 跨数据库所有权链接 SQL Server 2000 Service Pack 3 中的行为更改

文章翻译 文章翻译
文章编号: 810474 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

Microsoft SQL Server Service Pack 3 (SP3) 提供了一个新安全增强功能相关的配置跨数据库所有权链接在安装过程中的 启用跨数据库所有权链接的所有数据库 的选项。本文讨论了跨数据库所有权链接 SQL Server 2000 SP3 中的行为。使用此新选项,您可以控制允许跨数据库所有权链接。默认状态下,该选项被禁用。Microsoft 建议使用该默认值选项,因为它使您数据库服务器更安全。

更多信息

所有权链接

默认状态下,所有数据库对象都有所有者。当对象 (如视图、 一个存储的过程或用户定义的函数引用另一个对象时,将建立一个所有权链。例如对于一个表,为同一用户所有。同一用户拥有源对象、 视图、 存储的过程或用户定义的函数,并全部目标 (基础表、 视图或其他对象) 的对象所有权链是称为未遭破坏。未遭破坏所有权链时 SQL Server 检查源对象上,但不是在目标对象上的权限。

跨数据库所有权链接

当源对象依赖于另一个数据库中的对象跨数据库所有权链接时发生。跨数据库所有权链的作用与所有权链接一个数据库中相同的方式不同的一种未遭破坏的所有权链基于映射到相同的登录帐户的所有对象所有者。因此,一个跨数据库所有权链中如果源数据库中的源对象和目标数据库中的目标对象所拥有的相同的登录帐户 SQL Server 不检查目标对象上的权限。

如果您有一个的应用程序所使用的多个数据库和应用程序调用存储的过程或基于在另一个的数据库中的对象的数据库中视图然后跨数据库所有权链接使用。依赖于跨数据库所有权链接的应用程序可能会生成权限被拒绝错误,如果跨数据库所有权链接选项处于关闭状态。

与跨数据库所有权链接相关联的风险

Microsoft 建议您禁用跨数据库所有权链接由于的高特权的用户可以执行的操作的选项:
  • 数据库所有者和 db_ddladmindb_owners 数据库角色的成员可以创建由其他用户拥有的对象。 这些对象可以潜在目标中的其他数据库对象。这意味着如果启用了跨数据库所有权链接必须完全信任这些用户的所有数据库中的数据。若要标识 db_ddladmindb_owners 角色当前数据库中的成员,请执行以下的 TRANSACT-SQL 命令:
    exec sp_helprolemember 'db_ddladmin' exec sp_helprolemember 'db_owner'
  • 具有 CREATE DATABASE 权限的用户可以创建新数据库,并将附加现有的数据库。如果启用跨数据库所有权链接,这些用户可以访问其他数据库中的对象从刚创建或附加数据库。
即使 Microsoft 建议您关闭跨数据库所有权链接的最大安全性,有一些环境,其中您可以完全信任您具有高特权的用户 ; 因此,您可以启用跨数据库所有权的特定数据库以满足特定应用程序的要求。

如何配置跨数据库所有权链接安装过程中

在 Microsoft SQL Server Service Pack 3 (SP3) 安装一个新的对话框已添加到允许系统管理员联系,以控制将允许跨数据库所有权链接。如果在 SQL Server 2000 SP3 安装过程中选择 启用跨数据库所有权链接的所有数据库 的所有数据库启用此选项。这是默认 SQL Server 2000 SP3 之前的行为。无论您选择在安装过程中的选项,您可以以后修改服务器和数据库支持跨数据库所有权链接使用的 TRANSACT-SQL 命令或从 SQL Server 企业管理器。

如何配置安装后的跨数据库所有权链接

若要将跨数据库所有权链配置使用 sp_configuresp_dboption 存储过程中新的选项。

注意如果分离,并且再重新连接数据库则必须重新启用跨数据库所有权链接。
  • 配置跨数据库所有权链接使用的 TRANSACT-SQL 命令:
    • 配置跨数据库所有权链接 SQL Server 的实例的支持,使用 sp_configure 新的 跨数据库所有权链接 选项。当此选项设置为 0 时,您可以控制跨数据库所有权链接在数据库级别上,通过使用 sp_dboption。当此选项设置为 1 时,不能限制跨数据库所有权链接。这是在预-SQL Server 2000 SP3 行为。如果更改了此选项,请包括 RECONFIGURE 选项重新配置该实例,而无需重新启动它。允许跨数据库所有权链接中的所有数据库,例如对于使用以下命令:
      EXEC sp_configure 'Cross DB Ownership Chaining', '1'; RECONFIGURE 
      
    • 配置跨数据库所有权链接在新的 数据库链接 选项,对 sp_dboption 数据库级别。当此选项被设置为 false 时,数据库不能参与跨数据库所有权链接作为源或目标数据库。如果此选项设置为 true,则,数据库可以参与跨数据库所有权链。默认状态下,该选项为 false 的所有用户数据库,应用 SQL Server 2000 SP3 后。以下命令启用跨数据库所有权链接的罗斯文数据库:
      EXEC sp_dboption 'Northwind', 'db chaining', 'true'

    只有当 sp_configure跨数据库所有权链接 选项设置为 0 时,会显示 sp_dboption 的效果。此外,以便跨数据库所有权链接在数据库级别上,您必须启用此选项后的,源和目标数据库。
  • 配置跨数据库所有权链接通过使用 SQL 企业管理器:
    • 若要将此选项的所有数据库,请按照下列步骤操作:
      1. 用鼠标右键单击 <server>.
      2. 单击此处,选择 属性
      3. 单击 安全性
      4. 单击以选中的 所有权链 中的 允许跨数据库所有权链接 部分。
      5. 单击 确定。系统将提示您停止并重新启动 SQL Server 的服务。
      6. 单击 确定
    • 若要在数据库级别上的此选项,请按照下列步骤操作:
      1. 用鼠标右键单击该 <database>.
      2. 单击此处,选择 属性
      3. 单击 选项
      4. 单击以选中 允许跨数据库所有权链接设置 部分

属性

文章编号: 810474 - 最后修改: 2007年10月29日 - 修订: 4.3
这篇文章中的信息适用于:
  • Microsoft SQL Server 2000 Service Pack 3
关键字:?
kbmt kbproductlink kbinfo kbsysadmin kbupgrade kbsqlserv2000sp3fea KB810474 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 810474
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com