Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » SQL 方言和兼容性 » SQL 方言 » Adaptive Server Enterprise 体系结构

 

用户和组

Adaptive Server Enterprise 和 SQL Anywhere 在用户和组模式上存在着一些差异。

在 Adaptive Server Enterprise 中,用户连接到某个服务器。每个用户都需要该服务器的登录 ID 和口令以及该服务器上他们要访问的每个数据库的用户 ID。数据库的每个用户只能是一个组的成员。

在 SQL Anywhere 中,用户可以直接连接到数据库,并且不需要单独的登录 ID 即可连接到数据库服务器。实际上,每个用户都会接收数据库上的用户 ID 和口令,这样他们便可以使用该数据库。用户可以是许多组的成员,并且组的层次是允许存在的。

这两种服务器都支持组,所以您可以一次向多个用户授予权限。但是,这两种服务器中的组在某些细节上存在差异。例如,Adaptive Server Enterprise 只允许每个用户成为一个组的成员,而 SQL Anywhere 没有这种限制。有关具体信息,请比较这两种产品中有关用户和组的文档。

Adaptive Server Enterprise 和 SQL Anywhere 都具有公共组,该组用于定义缺省权限。每个用户都会自动成为公共组的成员。

SQL Anywhere 支持使用以下 Adaptive Server Enterprise 系统过程来管理用户和组。请参见Adaptive Server Enterprise 系统和分类过程

系统过程 说明
sp_addlogin 在 Adaptive Server Enterprise 中,将用户添加到服务器。在 SQL Anywhere 中,将用户添加到数据库。
sp_adduser 在 Adaptive Server Enterprise 和 SQL Anywhere 中,将用户添加到数据库。在 Adaptive Server Enterprise 中,它与 sp_addlogin 是截然不同的两个任务,但在 SQL Anywhere 中,它们是相同的。
sp_addgroup 将组添加到数据库中。
sp_changegroup 将用户添加到组中,或者将用户从一个组移到另一个组。
sp_droplogin 在 Adaptive Server Enterprise 中,从服务器中删除用户。在 SQL Anywhere 中,从数据库中删除用户。
sp_dropuser 从数据库中删除用户。
sp_dropgroup 从数据库中删除组。

在 Adaptive Server Enterprise 中,登录 ID 是全服务器范围的。在 SQL Anywhere 中,用户却属于单个的数据库。

数据库对象权限

Adaptive Server Enterprise 和 SQL Anywhere 在授予特定数据库对象的权限时所使用的 GRANT 和 REVOKE 语句非常相似。它们都允许在数据库表和视图上拥有 SELECT、INSERT、DELETE、UPDATE 和 REFERENCES 权限以及在数据库表的选定列拥有 UPDATE 权限。它们都允许在存储过程上授予 EXECUTE 权限。

例如,以下语句在 Adaptive Server Enterprise 和 SQL Anywhere 中都有效:

GRANT INSERT, DELETE
ON Employees
TO MARY, SALES;

此语句向用户 MARY 和 SALES 组授予对 Employees 表使用 INSERT 语句和 DELETE 语句的权限。

虽然 SQL Anywhere 不允许在 GRANT EXECUTE 语句上使用 WITH GRANT OPTION,但 SQL Anywhere 和 Adaptive Server Enterprise 都支持 WITH GRANT OPTION 子句,该子句允许权限的接收者向其他用户授予这种权限。在 SQL Anywhere 中,您只能为用户指定 WITH GRANT OPTION。如果将 WITH GRANT OPTION 授予组,则组的成员不会继承 WITH GRANT OPTION。

全数据库范围的权限

对于全数据库范围的用户权限,Adaptive Server Enterprise 和 SQL Anywhere 使用不同的模式。SQL Anywhere 使用 DBA 权限来向用户授予对数据库的完全权限。Adaptive Server Enterprise 中的系统管理员享有服务器上所有数据库的这一权限。但是,SQL Anywhere 数据库上的 DBA 权限不同于 Adaptive Server Enterprise 数据库所有者的权限,后者必须使用 Adaptive Server Enterprise 的 SETUSER 语句获取对其他用户拥有的对象的权限。请参见用户和组

SQL Anywhere 使用 RESOURCE 权限来授予用户在数据库中创建对象的权限。相应的 Adaptive Server Enterprise 权限为 GRANT ALL,它由数据库所有者来使用。