SQL Server 地理数据库所有者的比较

地理数据库是数据库中各种表、视图、函数及所保存程序的集合。在 Microsoft SQL Server 数据库中的地理数据库内,此对象集合可以归名为 sde 的数据库用户或 dbo 数据库用户所有。地理数据库的所有者即为地理数据库管理员。由于用户名和方案名在地理数据库中必须匹配,因此 sde 用户拥有的地理数据库称为 sde 方案地理数据库,而 dbo 拥有的地理数据库称为 dbo 方案地理数据库。

注:

重要的是,应当了解 SQL Server 如何管理对数据及其他对象的访问。因此,如果您不熟悉 SQL Server 安全模型,请阅读 Microsoft SQL Server 文档。SQL Server 在实例级别上对登录帐户进行身份验证,并在数据库级别授权相应用户。所授予的不同权限可应用于整个实例、特定数据库或多个数据库、或者数据库中的数据。这可能会影响您决定使用哪种类型的地理数据库所有者。

创建地理数据库时您所连接的登录帐户确定了哪个数据库用户拥有地理数据库。如果您连接的操作系统登录帐户或 SQL Server 登录帐户已映射到数据库中的 dbo 用户,则会创建一个 dbo 方案地理数据库。如果您连接的操作系统或 SQL Server 登录帐户已映射到数据库中名为 sde 的用户,则会创建一个 sde 方案地理数据库。

sde 用户

数据库中的 sde 用户可以与经 SQL Server 身份验证的登录帐户或经操作系统身份验证的登录帐户相关联。sde 用户必须拥有对名为 sde 的方案的权限,而该方案必须是 sde 用户的默认方案。sde 用户还必须获得对数据库的权限,以使用户创建和管理地理数据库。

dbo 用户

dbo 用户及其默认方案自动存在于所有数据库中。登录帐户可以通过两种方法中的任一种成为数据库中的 dbo 用户:

  • 通过创建或者成为特定数据库的所有者
  • 通过成为 sysadmin 固定服务器角色的成员

映射到特定数据库中 dbo 用户的登录帐户在该数据库中具有最高可能权限;因此,登录帐户拥有创建和管理地理数据库的足够权限。映射到特定数据库中 dbo 用户的登录帐户在 SQL Server 实例或其他数据库中并不具有高级权限,除非向该登录帐户明确授予此类权限。

属于 sysadmin 固定服务器角色成员的登录帐户被映射到 SQL Server 实例中每个数据库的 dbo 用户,而且在 SQL Server 实例中拥有最高可能权限。此类登录帐户拥有足够的权限,能够创建和管理地理数据库,并可在实例中创建、修改、删除及管理其他可获得的数据。

dbo 用户拥有的所有数据库对象均存储在 dbo 方案中。

哪种用户应当拥有地理数据库?

在性能或功能方面,两种地理数据库方案类型基本没有区别。但两者各有优缺点。选择最适合系统及所选安全模型的用户(及方案)。

下面根据使用的身份验证类型比较两种方案:

方案身份验证优点缺点

Dbo(sysadmin 成员)

操作系统或 SQL Server 登录帐户

  • 如果 SQL Server 数据库管理员还担任地理数据库管理员,则最好使用 dbo 方案以避免同一个人根据需要完成的任务而使用两个不同的登录帐户。
  • 如果需要多个地理数据库管理员,则可以向 sysadmin 固定服务器角色添加多个登录帐户。
  • 登录帐户在 SQL Server 实例中对所有可获得的数据拥有高级权限。
  • 在运行创建企业级地理数据库工具之前,必须创建登录帐户并将其添加到 sysadmin 角色中。
  • 如果使用的是本地而非域登录帐户,则登录帐户仅存在于安装 SQL Server 的服务器上。因此,ArcGIS 客户端必须安装在同一服务器上,并且以本地登录帐户登录该服务器时,必须执行所有地理数据库管理任务。
  • Dbo 方案地理数据库在 Amazon Relational Database Service (RDS) for SQL Server 中不受支持。

Dbo(映射到特定数据库的 dbo)

操作系统或 SQL Server 登录帐户

  • 地理数据库管理员可以在特定数据库中执行地理数据库和数据库管理。
  • 高级权限不会超出特定数据库。
  • 如果需要其他地理数据库管理员,则可以在 sysadmin 固定服务器角色中设置其他登录帐户,使他们也成为此数据库中的 dbo 用户。
  • 用户在数据库中拥有高级权限。
  • 在运行创建企业级地理数据库工具之前,必须创建登录帐户和数据库,而且必须将登录帐户设置为数据库的所有者。
  • 如果使用的是本地而非域登录帐户,则登录帐户仅存在于安装 SQL Server 的服务器上。因此,ArcGIS 客户端必须安装在同一服务器上,并且以本地登录帐户登录该服务器时,必须执行所有地理数据库管理任务。
  • Dbo 方案地理数据库在 Amazon RDS for SQL Server 中不受支持。

Sde

SQL Server 登录帐户

  • sde 用户仅需要在特定数据库中具有管理地理数据库的少量语句权限。
  • 在数据库中创建地理数据库时,可以通过创建企业级地理数据库工具创建 sde SQL Server 登录帐户、数据库用户及方案。或者,数据库管理员可以创建数据库、sde 用户(具有所需权限)和 sde 方案,然后由 sde 用户使用启用企业级地理数据库地理处理工具创建地理数据库。
  • Amazon RDS for SQL Server 中创建地理数据库时,可以使用 sde SQL Server 登录帐户。
  • 只有单点登录帐户可以映射到 sde 用户。
  • SQL Server 实例必须允许进行混合模式身份验证。
  • 必须由数据库管理员运行创建企业级地理数据库工具。

Sde

操作系统登录帐户

  • sde 用户仅需要在特定数据库中具有创建和管理地理数据库的少量语句权限。数据库管理员可以创建数据库、sde 用户(具有所需权限)和 sde 方案,然后由 sde 用户使用启用企业级地理数据库地理处理工具创建地理数据库。
  • 可以将现有域登录帐户映射到 sde 用户。
  • SQL Server 实例仅允许操作系统身份验证的站点中,可以使用经操作系统身份验证的 sde 登录帐户。
  • 可能需要创建和管理与特定人员没有直接关联的操作系统登录帐户。*
  • 在运行创建企业级地理数据库工具之前,必须创建数据库、sde 登录帐户、用户及方案。
  • 只有单点登录帐户可以映射到 sde 用户。
  • 您必须使用 sde 登录帐户登录到 Windows,才能运行创建企业级地理数据库工具。
  • 如果使用的是本地而非域登录帐户,则登录帐户仅存在于安装 SQL Server 的服务器上。因此,ArcGIS 客户端必须安装在同一服务器上,并且以本地登录帐户登录该服务器时,必须执行所有地理数据库管理任务。

*大多数操作系统登录帐户,尤其是域登录帐户,都属于特定人员。此人使用该登录帐户登录他或她的计算机并访问应用程序,其中包括 SQL Server。因此,此人将始终以 sde 用户身份连接到地理数据库。如果同一个人同时担任地理数据库管理员并在地理数据库中创建数据,则您可能需要创建另一个操作系统登录帐户并将其映射到数据库中另一个权限较低的用户,实际上为该人员提供了两个登录帐户。这意味着该人员必须根据地理数据库中需要完成的任务来切换计算机上的登录帐户。许多站点都避免为同一个人创建多个登录帐户,因为这样往往会产生安全影响并增加登录帐户管理的复杂度。基于以上原因,如果同一个人在地理数据库中担任多个角色,则经操作系统身份验证的 sde 用户不是一个很好的选择。