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