随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从https://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站https://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!
如有Sybase数据库技术问题需要咨询,请联系我!
以下官方手册为ASE 15.7 ESD#2中文版:
- 新增功能公告 适用于 Windows、Linux 和 UNIX 的 Open Server 15.7 和 SDK 15.7
- 新增功能摘要
- 新增功能指南
- ASE 15.7 发行公告
- 配置指南(windows)
- 安装指南(windows)
- 参考手册:构件块
- 参考手册:命令
- 参考手册:过程
- 参考手册:表
- Transact-SQL® 用户指南
- 系统管理指南,卷 1
- 系统管理指南,卷 2
- 性能和调优系列:基础知识
- 性能和调优系列:锁定和并发控制
- 性能和调优系列:监控表
- 性能和调优系列:物理数据库调优
- 性能和调优系列:查询处理和抽象计划
- 性能和调优系列:使用 sp_sysmon 监控 Adaptive Server
- 性能和调优系列:利用统计分析改进性能
- 程序员参考 jConnect for JDBC 7.0.7
- Adaptive Server Enterprise 中的 Java
- 组件集成服务用户指南
- Ribo 用户指南
- 内存数据库用户指南
- Sybase Control Center for Adaptive Server® Enterprise
- 安全性管理指南
- 实用程序指南
grant
说明 为单个用户、用户组和角色指派权限。
语法 授予访问数据库对象的权限:
grant {all [privileges]| permission_list}
on {table_name as [correlation_name][(column_list)]
| view_name[(column_list)]
| stored_procedure_name | SQL_function_name}
| keyname}
[where search_conditions [as pred_name]] to {public | name_list | role_list}
[with grant option] [granted by grantor]
授予使用内置函数的权限:
grant select
on [builtin] builtin
to {name_list | role_list} [granted by grantor]
授予执行特定命令的系统特权:
grant {all [privileges] | privilege_list} to {public | name_list | role_list} [granted by grantor]
授予 dbcc 特权:
grant {dbcc_privilege [on database ]
[, dbcc_privilege [on database ], ...]} to {user_list | role_list }
[granted by grantor]
授予特定系统表的缺省权限:
grant default permissions on system tables
授予被授予者权限,允许其将服务器用户标识切换成任何其它服务器登 录名,并根据目标登录名的角色限制其使用:
grant set proxy to name_list
[restrict role role_list | all | system] [granted by grantor]
参数 all
当用于指派访问数据库对象的权限时, all 指定授予适用于指定对象的 所有权限 (decrypt 权限除外)。所有对象所有者都可以使用含有对象 名的 grant all 授予各自对象的权限。 decrypt 权限必须单独授予。
在未启用细化权限的情况下,系统管理员或数据库的所有者可以使用 grant all 指派用于创建数据库对象的特权 (请参见 “授予执行特定命 令的系统特权”的语法)。由系统管理员使用时,grant all 指派所有的 create 特权 (create database、 create default、 create procedure、 create rule、 create table、 create function 和 create view)。数据库所有者使用 grant all 或在 master 数据库外执行 grant all 时, Adaptive Server 将授予 除 create database 之外的所有 create 权限并显示信息性消息。
在启用细化权限的情况下,不支持使用 grant all 授予所有 create 特权。 有关详细信息,请参见 《安全性管理指南》中的 “使用细化权限”。
不能将 all 用于包含 where 子句的 grant 语句。
permission_list 是授予的对象访问权限的列表。如果列出的权限不止一个,可用逗号 将它们隔开。下表说明了可针对每种对象类型授予的访问权限:
对象 permission_list 可包括
列 select、 update、 references、 decrypt
列名可以在 column_list 中指定。
加密密钥 select
存储过程 execute
SQL 函数 execute
表 select、 insert、 delete、 update、 references、 update statistics、delete statistics、truncate table、decrypt、transfer table、 identity_insert * 、 identity_update *
视图 select、 insert、 delete、 update、decrypt、identity_insert * 、
identity_update *
注释 标有星号 (*) 的权限仅在启用细化权限时才能授予。
correlation_name
仅用于 grant ... where 命令,作为别名来引用 where 子句中 table_name
内的列。
table_name 是您在授予其使用权限的表的名称。该表必须在当前数据库中。对于 每个 grant 语句只能列出一个对象。
column_list 是由逗号分隔的、该权限适用的一个或多个命名列。如果指定了列, 则只能授予 select、 references、 decrypt 和 update 权限。
如果使用 where 子句对一个或多个命名列发出 grant 命令,则 Adaptive Server 将按照以下方式对用户的 select、update 或 delete 命令实施行级 访问:
• 在目标列表或用户 select 语句的 where 子句中引用 grant select 语句 上的一个或多个命名列
• 在用户 update 语句的目标列表中引用 grant update 语句上的一个或 多个命名列
• 对于会话已将 ansi_permissions 设置为开的用户 update 或 delete 语 句,在其 where 子句中引用 grant select 上的一个或多个列。
view_name
是您在授予其使用权限的视图的名称。该视图必须位于当前数据库中。
stored_procedure_name 是您在授予其权限的存储过程的名称。该存储过程必须位于当前数据 库中。
key_name
是您在授予其访问权限的加密密钥的名称。 key_name 必须存在于当 前数据库中。
SQL_function_name
是您在授予其权限的 SQL 函数的名称。此存储函数必须位于当前数 据库中。对于每个 grant 语句只能列出一个函数。
where search_conditions
充当行过滤器,与 select、update 或 delete 语句中指定的任何 where 子 句结合使用。仅当向表授予 select、update 和 delete 特权时,才可以使 用 where 语法。 search_conditions 可以使用一般 where 子句中允许的所 有语法。如果 where 子句访问没有授权的表,则必须使用子查询。关 于使用 grant 语句上的 where 子句的信息,请参见 《安全性管理指 南》中的 “授予谓词特权”。
as pred_name 是谓词的名称,在当前数据库中授予者所拥有的其它对象名称中必须 是唯一的,并且符合标识符规则。如果您省略 pred_name, Adaptive Server 会向 grant 谓词指派一个唯一的名称,使用 sp_helprotect 可查看 该名称。pred_name 不能用于没有 where 子句的 grant 语句。谓词可由 revoke 命令按名称引用。
指所有用户。对于对象访问权限, public 不包括对象所有者。对于对 象创建权限或 set proxy 授权, public 不包括数据库所有者。
name_list
是由逗号分隔的用户名和组名的列表。
role_list
是您要授予其权限的角色 (系统定义角色或用户定义角色)的列表。
允许 name_list 中指定的用户向其他用户授予对象访问权限。使用 with grant option 只能向单个用户授予权限,而不能向 “public”或者向组 或角色授予权限。不能使用 with grant option 授予谓词特权
granted by grantor
将授予者指定为数据库中未执行该命令的用户。
grantor
当前数据库中的有效用户名,授予者的用户标识 (而非执行者的用 户标识)将会作为授权者记录在系统目录 sysprotects 中。
builtin
是内置函数。在内置函数名允许使用相同的名称区分表和可授予内置 函数之前,指定关键字 builtin。可授予 builtin 函数为 set_appcontext、 get_appcontext、 list_appcontext、 authmech、 rm_appcontext 和 next_identity (需要对 IDENTITY 列的 select 权限)。
privilege_list 是列有可授权系统特权的列表。系统特权包括服务器范围和数据库范 围特权。有关可授予的系统特权,请参见 表 1-21、 表 1-22。有关如何 授予系统特权的详细信息,另请参见 “用法”部分。使用逗号分隔 多个命令。
是您在授予的 dbcc 特权的名称。它不能是变量。 表 1-21 和 表 1-22 包 括可授予的服务器范围 dbcc 和数据库范围 dbcc 特权。
注释 不能向 public 或组授予或撤消 dbcc 特权。
database
是您正在授予其权限的数据库的名称。它用于授予数据库范围 dbcc 特权。 on database 子句是可选的,数据库必须是当前数据库。被授予 者必须是目标数据库中的有效用户。 database 应符合标识符的规则, 而且不能是变量。
如果在同一命令中存在多个授予的操作,则 database 必须是唯一的。
set proxy
授予用户充当另一用户的权限。如果被授予者不具有已授予的 role_list 中的角色,而目标登录名具有已授予的 role_list 中的任何角 色,对该目标登录名进行 set proxy 将失败。
system
被授予者不能与拥有其它系统角色的用户交换其标识。 sysystem 只能 用于 set proxy 参数。
restrict role role_list
只有被授予者和目标登录名拥有 role_list 中包括的任何角色,才允许 其交换标识。
all
被授予者可将其标识授予与其具有相同角色集的任何用户。也就是 说,被授予者不能通过执行 set proxy 命令来继承任何新角色。
系统表的缺省权限
指定您授予对 第 425 页的 “授予对系统表的缺省权限”中所列出的 系统表的缺省权限。
示例 示例 1 授予 Mary 和“sales”组在 titles 表上使用 insert 和 delete 命令的权限:
grant insert, delete on titles
to mary, sales
示例 2 授予 “public”(包括所有用户) get_appcontext 函数的 select 权限:
grant select on builtin get_appcontext to public
将其与以下命令比较,如果存在一个名为 get_appcontext 的表,以下命 令将授予该表的 select 权限:
grant select on get_appcontext to public
明确在 grant 语句中包括 builtin 参数可确保您不会错误选择与某个函数同 名的表 本例中,存在与 get_appcontext 函数同名的 get_appcontext 表。
示例 3 有两种方法可以将 titles 表的 price 和 advance 列的 update 权限授予 “public”(包括所有用户):
grant update
on titles (price, advance) to public
或:
grant update (price, advance) on titles
to public
示例 4 向用户 Mary 授予对 titles 表的 transfer table 权限:
grant transfer table on titles to mary
示例 5 授予 Mary 和 John 使用 create database 和 create table 命令的权限。
Mary 和 John 的 create table 权限仅适用于 master 数据库:
grant create database, create table to mary, john
示例 6 授予所有用户对 titles 表的完整访问权限 (decrypt 权限除外):
grant all on titles to public
示例 7 给 Mary 在 authors 表上使用 update 命令的权限和将该权限授予其 他用户的权限:
grant update on authors to mary
with grant option
示例 8 给 Bob 在 titles 表的 price 列上使用 select 和 update 命令的权限和将 该权限授予其他用户的权限:
grant select, update on titles (price) to bob
with grant option
示例 9 授予所有系统安全员执行 new_sproc 存储过程的权限:
grant execute on new_sproc to sso_role
示例 10 授予 James 在引用 titles 表的 price 列的另一个表上创建参照完整 性约束的权限:
grant references on titles (price)
to james
注释 在创建包含参照完整性约束的表以引用另一用户的表之前,必须 被授予对被引用表的 references 权限。该表在被引用的列上还必须具有 一个唯一约束或唯一索引。有关参照完整性约束的详细信息,请参见 create table。
示例 11 密钥所有者执行时,授予数据库所有者使用 ssn_key 指定列加 密的权限。数据库所有者需要对 ssn_key 具有 select 权限,以便在执行 create table、 alter table 或 select into 时进行引用:
grant select on ssn_key to dbo
示例 12 授予 Bob 创建加密密钥的权限:
grant create encyption key to Bob
示例 13 授予对 customer 表中所有加密列的 decrypt 权限:
grant decrypt on customer to accounts_role
示例 14 向 Joe 授予对 master 的 dump any database 特权,允许他转储任何 数据库:
1> use master
2> go
1> grant dump any database to joe 2> go
示例 15 向 Joe 授予对数据库 pubs2 的 create any object 特权,允许其代表 自己或者 pubs2 中的其他用户创建任何对象特权:
1> use pubs2
2> go
1> grant create any object to joe 2> go
示例 16 向 Alex 授予 manage roles。这会返回一条错误,因为服务器范围 特权需要 master 为当前数据库:
1> use pubs2
2> go
1> grant manage roles to alex 2> go
Msg 4627, Level 16, State 1:
Line 1:
The user must be in the master database to GRANT/REVOKE this command.
示例 17 通过使用角色,系统管理员允许 Carlos 对任何符合以下两种条件 之一的数据库执行 dbcc checkalloc:Carlos 是该数据库的有效用户;该数 据库支持 “guest”用户。
注释 注意:如果 master中已经存在 “guest”用户,则不必将 Carlos 作 为真实用户添加到 master 数据库中。
1> use master
2> go
1> create role checkalloc_role 2> go
1> grant dbcc checkalloc any database to checkalloc_role 2> go
1> create login carlos with password carlospassword 2> go
1> grant role checkalloc_role to carlos 2> go
示例 18 授予 Frank (master 数据库中的有效用户)对服务器中的所有数 据库执行 dbcc checkdb 的能力:
1> use master
2> go
1> create login frank with password frankpassword 2> go
Password correctly set. Account unlocked.
New login created. (return status = 0)
1> sp_adduser frank
2> go
New user added. (return status = 0)
1> grant dbcc checkdb any database to frank 2> go
Frank 现在可对服务器中的、他是其中的有效用户的每个数据库执行
dbcc checkdb 命令:
% isql -Ufrank -Pfrankpassword -SSERVER 1> dbcc checkdb (tempdb)
2> go
Checking tempdb:Logical pagesize is 2048 bytes Checking sysobjects:Logical pagesize is 2048 bytes
...
The total number of data pages in this table is 1. DBCC execution completed.If DBCC printed error messages, contact a user with system administrator (SA) role.
注释 不能向 public 或组授予或撤消 dbcc 特权。
示例 19 如果 Walter 需要成为 pubs2 的维护用户,但系统管理员不希望授 予他对其它数据库的管理员级特权,则系统管理员可执行以下命令:
1> use pubs2
2> go
1> grant dbcc checkdb on pubs2 to walter 2> go
注释 系统管理员必须在目标数据库 (在本例中为 pubs2)中,同时,
Walter 必须是该目标数据库中的有效用户。 on pubs2 子句是可选的。
Walter 现在能够在 customers 数据库上执行 dbcc checkdb 命令,而不会遇 到错误。
示例 20 错误地将 grant dbcc 和 revoke dbcc 应用于组或 public:
1> grant dbcc tablealloc on pubs2 to public Msg 4629, Level 16, State 1:
Line 1:
GRANT/REVOKE DBCC does not apply to groups or PUBLIC. 1> sp_addgroup gr
New group added. (return status = 0)
11> grant dbcc tablealloc on pubs2 to public
Msg 4629, Level 16, State 1:
Line 1:
GRANT/REVOKE DBCC does not apply to groups or PUBLIC.
示例 21 不能使用 grant 选项授予系统特权:
grant change password to alex with grant option Msg 156, Level 15, State 1:
Line 1:
Incorrect syntax near the keyword 'with'.
示例 22 允许 Harry 在 authors 表上使用 truncate table 和 updates statistics:
grant truncate table on authors to harry grant update statistics on authors to harry
示例 23 允许 Billy 在 authors 表上使用 delete statistics 命令:
grant delete statistics on authors to billy
示例 24 授予角色为 oper_role 的所有用户 truncate table、 update 和 delete statistics 特权 (如果 Billy 和 Harry 具有角色 oper_role,则他们现在可以 对 authors 执行这些命令):
grant truncate table on authors to oper_role grant update statistics on authors to oper_role grant delete statistics on authors to oper_role
示例 25 通过存储过程隐式授予 truncate table、 delete statistics 和 update statistics 权限。例如,假设 Billy 拥有 authors 表,他可以执行以下命令 授予 Harry 在 authors 表上运行 truncate table 和 update statistics 的特权:
create procedure sproc1 as
truncate table authors update statistics authors go
grant execute on sproc1 to harry go
也可以通过存储过程在列级隐式授予 update statistics 和 delete statistics 的 权限。
示例 26 授予 Harry 和 Billy 执行 set proxy 或 set session authorization 的权 限,使其可以在服务器上充当另一个用户:
grant set proxy to harry, billy
示例 27 授予具有 sso_role 权限的用户执行 set proxy 或 set session authorization 的权限,使其可以在服务器上充当另一个用户:
grant set session authorization to sso_role
示例 28 将 set proxy 授予 Joe,但限制他将标识切换为具有 sa、 sso 或 admin 角色的任何用户 (但是,如果他已经具有这些角色,则他可以对 具有这些角色的任何用户执行 set proxy):
grant set proxy to joe
restrict role sa_role, sso_role, admin_role
如果 Joe 尝试将其标识切换为某个具有 admin_role 的用户 (在本示例中, 为 Our_admin_role)时,除非他已经具有 admin_role,否则此命令失败:
set proxy Our_admin_role
Msg 10368, Level 14, State 1:
Server 's', Line 2:Set session authorization permission denied because the target login has a role that you do not have and you have been restricted from using.
Joe 被授予 admin_role 并重试此命令后,此命令成功:
grant role admin_role to joe set proxy Our_admin_role
示例 29 限制 Joe 在切换标识时被授予任何新的角色:
grant set proxy to joe restrict role all
Joe 只能将 set proxy 授予具有与他相同角色 (或更少特权的角色)的用 户。
示例 30 限制 Joe 在使用 set proxy 时获得任何新的系统角色:
grant set proxy to joe restrict role system
如果目标登录名具有 Joe 所没有的系统角色,则 set proxy 失败。
示例 31 仅允许学员查看其各自等级的相关信息:
grant select on grades
where user_name(uid) = USER as predicate_grades to public
示例 32 允许注册学员查看所有课程的相关信息。第一个 grant 允许任何 用户浏览所提供的课程和章节。第二个 grant 仅允许用户查看自己注册 的课程。
grant select on enrollment (course_id, quarter, section_id) to public
grant select on enrollment as e (uid, with_honors)
where e.uid in (select r.uid from registered_students r
where USER = user_name(r.uid)) to public
注册学员输入以下查询时,会被限定为查看自己的课程 (因为已选中
with_honors 列):
select course_id, quarter, with_honors from enrollment
同样,当注册学员尝试使用以下查询查看用户所参与的课程数时:
select course_id, count(uid) from enrollment group by course_id
Adaptive Server 将返回一个行,显示用户注册的课程数。
示例 33 用户 Smith 授予 John 对 mary.books 的 select 权限,表所有者 Mary
为授予者:
grant select on mary.books to john granted by mary
示例 34 用户 Smith 授予用户 John create table 权限, dbo 为授予者:
grant create table to john granted by dbo
示例 35 在禁用细化权限的情况下,授予系统特权 manage any login 将导 致错误:
1>sp_configure "enable granular permissions" 2>go
Parameter Name Default Memory Used Config Value Run Value Unit Type
-------------- ------- ---------- ------------ --------- ---- ----
enable granular
permissions 0 0 0 0 switch dynamic
(1 row affected) (return status = 0)
>grant manage any login to smith
>go
Msg 16325, Level 15, State 87:
Line 1:
Cannot GRANT/REVOKE permission 'MANAGE ANY LOGIN'.Verify that the granular permissions option is enabled.
示例 36 授予系统特权 own database 时,必须指定 on database 子句:
1>grant own database to smith 2>go
Msg 156, Level 15, State 2:
Line 1:
Incorrect syntax near the keyword 'to'.
1>grant own database on tdb1 to smith 2>go
可在 grant 语法中用关键字 from 替代 to。
使用 set fipsflagger
在 set fipsflagger 选项启用的情况下,当执行 grant dbcc 时,它将发出下面 的警告:
SQL statement on line number 1 contains Non-ANSI text.The error is caused due to the use of DBCC.
“特权” (Privileges)
表 1-21 列出所有可授予服务器范围系统特权。必须在 master 数据库中 授予服务器范围特权。有关每个被授予特权可执行的操作,请参见
《安全性管理指南》中 “使用细化权限”一章的表 8-15:服务器范围特 权。
注释 在 表 1-21 中,如果禁用细化权限,则只能授予标有星号 ( * ) 的 特权。
dbcc 特权语法 dbcc dbcc_subcmd on all 是 dbcc dbcc_subcmd any database 的 别名。这两种语法均受支持。
表 1-21: 可授予的服务器范围系统特权
类别 特权
特权管理 • manage security permissions
• manage server permissions
审计管理 • manage auditing
登录名和角色管理 • allow exceptional login
• change password
• manage any login
• manage any login profile
• manage remote login
• manage roles
类别 特权
数据库管理 • checkpoint (on database)
• checkpoint any database
• create database*
• dump any database
• dump database (on database)
• load any database
• load database (on database)
• manage any database
服务器管理 • manage any thread pool
• manage cluster
• manage disk
• manage security configuration
DBCC 特权 • dbcc checkalloc any database*
• dbcc checkcatalog any database*
• dbcc checkdb any database*
• dbcc checkindex any database*
• dbcc checkstorage any database*
• dbcc checktable any database*
• dbcc checkverify any database*
应用程序管理 • manage any execution class
• manage any ESP
• manage data cache
• manage dump configuration
其它 • connect*
• kill
• kill any process
• map external file
• monitor server replication
• set proxy
• mount any database
• online any database
• online database (on database)
• own any database
• own database (on database)
• quiesce any database
• unmount any database
• manage server
• manage server configuration
• shutdown
• dbcc fix_text any database*
• dbcc indexalloc any database*
• dbcc reindex any database*
• dbcc tablealloc any database*
• dbcc textalloc any database*
• dbcc tune*
• manage lock promotion threshold
• monitor qp performance
• manage resource limit
• set tracing*
• set tracing any process
• set switch
• show switch
• use any database
• use database
表 1-22 列出所有可授予数据库范围系统特权。数据库范围特权必须在要 执行特权的数据库中授予。有关每个被授予特权可执行的操作,请参见
《安全性管理指南》中 “使用细化权限”一章的表 8-16:数据库范围特 权。
注释 在 表 1-22 中,如果禁用细化权限,则只能授予标有星号 ( * ) 的 特权。
表 1-22: 可授予的数据库范围特权
类别 特权
特权管理 • manage any object permission
• manage database permissions
用户管理 • manage any user
设置用户 • setuser*
复制管理 • manage replication
数据库管理 • manage database
查询计划管理 • manage abstract plans
DBCC 特权 • dbcc checkalloc *
• dbcc checkcatalog *
• dbcc checkdb *
• dbcc checkindex *
• dbcc checkstorage *
• dbcc checktable *
• dbcc checkverify *
系统目录 • select any audit table
• select any system catalog
• truncate any audit table
一般对象 • alter any object owner
• create any object
• drop any object
加密密钥 • create encryption key *
• manage any encryption key
• manage column encryption key
缺省值 • create default *
• create any default
• drop any default
• dbcc fix_text *
• dbcc indexalloc *
• dbcc reindex *
• dbcc tablealloc *
• dbcc textalloc *
• manage checkstorage
• report checkstorage
• manage master key
• manage service key
类别 特权
函数 • create function *
• create any function
索引 • create any index
过程 • create procedure *
• create any procedure
规则 • create rule *
• create any rule
• drop any rule
表 • alter any table
• create any table
• create table *
• decrypt any table
• delete any table
• drop any table
• identity_insert any table
• identity_update any table
触发器 • create trigger *
• create any trigger
• drop any trigger
视图 • create view *
• create any view
• drop any view
• drop any function
• execute any function
• execute any procedure
• drop any procedure
• insert any table
• manage any statistics
• references any table
• reorg any table
• select any table
• transfer any table
• truncate any table
• update any table
特权列表
表 1-23 按字母顺序列出所有可授予的特权和权限。用 “*”标识的特权 不需要启用细化权限。
表 1-23: 特权的字母排序列表
特权名称 |
特权类型 |
管理方 (启用细化权限时) |
含义 |
allow exceptional login |
服务器 |
manage server 权限 |
|
alter any object owner |
数据库 |
manage database 权限 |
|
alter any table |
数据库 |
manage database 权限 |
|
change password |
服务器 |
manage security 权限 |
|
checkpoint any database |
服务器 |
manage server 权限 |
|
checkpoint (on database) |
服务器 |
manage server 权限 |
checkpoint any database |
checkpoint (on sybsecurity) |
服务器 |
manage security 权限 |
|
connect* |
服务器 |
manage server 权限 |
特权名称 |
特权类型 |
管理方 (启用细化权限时) |
含义 |
create any default |
数据库 |
manage database 权限 |
create any object |
create any function |
数据库 |
manage database 权限 |
create any object |
create any index |
数据库 |
manage database 权限 |
create any object |
create any object |
数据库 |
manage database 权限 |
|
create any procedure |
数据库 |
manage database 权限 |
create any object |
create any rule |
数据库 |
manage database 权限 |
create any object |
create any table |
数据库 |
manage database 权限 |
create any object |
create any trigger |
数据库 |
manage database 权限 |
create any object |
create any view |
数据库 |
manage database 权限 |
create any view |
create database* |
服务器 |
manage database 权限 |
|
create default* |
数据库 |
manage database 权限 |
create any default |
create encryption key* |
数据库 |
manage security 权限 |
manage column encryption key |
create function* |
数据库 |
manage database 权限 |
create any function |
create index* |
数据库 |
manage database 权限 |
create any index |
create procedure* |
数据库 |
manage database 权限 |
create procedure |
create rule* |
数据库 |
manage database 权限 |
create any rule |
create table* |
数据库 |
manage database 权限 |
create any table |
create trigger* |
数据库 |
manage database 权限 |
create any trigger |
create view* |
数据库 |
manage database 权限 |
create any view |
dbcc checkalloc* |
数据库 |
manage database 权限 |
dbcc checkalloc any database |
dbcc checkalloc any database* |
服务器 |
manage server 权限 |
|
dbcc checkcatalog* |
数据库 |
manage database 权限 |
dbcc checkcatalo any database |
dbcc checkcatalog any database* |
服务器 |
manage server 权限 |
|
dbcc checkdb* |
数据库 |
manage database 权限 |
dbcc checkdb any database |
dbcc checkdb any database* |
服务器 |
manage server 权限 |
|
dbcc checkindex* |
数据库 |
manage database 权限 |
dbcc checkindex any database |
dbcc checkindex any database * |
服务器 |
manage server 权限 |
|
dbcc checkstorage* |
数据库 |
manage database 权限 |
dbcc checkstorage any database |
dbcc checkstorage any database * |
服务器 |
manage server 权限 |
|
dbcc checktable* |
数据库 |
manage database 权限 |
dbcc checktable any database |
dbcc checktable any database* |
服务器 |
manage server 权限 |
|
dbcc checkverify* |
数据库 |
manage database 权限 |
dbcc checkverify any database |
dbcc checkverify any database* |
服务器 |
manage server 权限 |
|
dbcc fix_text* |
数据库 |
manage database 权限 |
dbcc fix_text any database |
dbcc fix_text any database* |
服务器 |
manage server 权限 |
|
dbcc indexalloc* |
数据库 |
manage database 权限 |
dbcc indexalloc any database |
特权名称 |
特权类型 |
管理方 (启用细化权限时) |
含义 |
dbcc indexalloc any database* |
服务器 |
manage server 权限 |
|
dbcc reindex* |
数据库 |
manage database 权限 |
dbcc reindex any database |
dbcc reindex any database* |
服务器 |
manage server 权限 |
|
dbcc tablealloc* |
数据库 |
manage database 权限 |
dbcc tablealloc any database |
dbcc tablealloc any database* |
服务器 |
manage server 权限 |
|
dbcc textalloc* |
数据库 |
manage database 权限 |
dbcc textalloc any database |
dbcc textalloc any database* |
服务器 |
manage server 权限 |
|
dbcc tune* |
服务器 |
manage server 权限 |
|
decrypt* |
对象 (列) |
manage any object permission/object owner |
decrypt any table |
decrypt any table |
数据库 |
manage database 权限 |
|
delete* |
对象 |
manage any object permission/object owner |
delete any table |
delete any table |
数据库 |
manage database 权限 |
|
delete statistics* |
对象 |
manage any object permission/object owner |
manage any statistics |
drop any default |
数据库 |
manage database 权限 |
drop any object |
drop any function |
数据库 |
manage database 权限 |
drop any object |
drop any object |
数据库 |
manage database 权限 |
|
drop any procedure |
数据库 |
manage database 权限 |
drop any object |
drop any rule |
数据库 |
manage database 权限 |
drop any object |
drop any table |
数据库 |
manage database 权限 |
drop any object |
drop any trigger |
数据库 |
manage database 权限 |
drop any object |
drop any view |
数据库 |
manage database 权限 |
drop any object |
dump any database |
服务器 |
manage server 权限 |
|
dump database (on database) |
服务器 |
manage server 权限 |
dump any database |
dump database (on sybsecurity) |
服务器 |
manage security 权限 |
|
execute* |
对象 |
manage any object permission/object owner |
execute any function (针对 udf) execute any function (针对系 统过程) |
execute any function |
数据库 |
manage database 权限 |
|
execute any procedure |
数据库 |
manage database procedures |
|
identity_insert |
对象 |
manage any object permission/object owner |
|
identity_insert any table |
数据库 |
manage database 权限 |
|
identity_update |
对象 |
manage any object permission/object owner |
特权名称 |
特权类型 |
管理方 (启用细化权限时) |
含义 |
identity_update any table |
数据库 |
manage database 权限 |
|
insert* |
对象 |
manage any object 权限/对象 所有者 |
insert any table |
insert any table |
数据库 |
manage database 权限 |
|
kill |
服务器 |
manage server 权限 |
kill any process |
kill any process |
服务器 |
manage server 权限 |
|
load any database |
服务器 |
manage server 权限 |
|
load database (on database) |
服务器 |
manage server 权限 |
load any database |
load database (on sybsecurity) |
服务器 |
manage security 权限 |
|
manage abstract plans |
数据库 |
manage database 权限 |
|
manage any database |
服务器 |
manage server 权限 |
|
manage any encryption key |
数据库 |
manage security 权限 |
|
manage any ESP |
服务器 |
manage server 权限 |
|
manage any execution class |
服务器 |
manage server 权限 |
|
manage any login |
服务器 |
manage security 权限 |
|
manage any login profile |
服务器 |
manage security 权限 |
|
manage any remote login |
服务器 |
manage security 权限 |
|
manage any statistics |
数据库 |
manage database 权限 |
|
manage any thread pool |
服务器 |
manage server 权限 |
|
manage any user |
数据库 |
manage database 权限 |
|
manage auditing |
服务器 |
manage security 权限 |
|
manage checkstorage |
数据库 |
manage database 权限 |
|
manage cluster |
服务器 |
manage server 权限 |
|
manage column encryption key |
数据库 |
manage security 权限 |
manage any encryption key |
manage data cache |
服务器 |
manage server 权限 |
|
manage database |
数据库 |
manage database 权限 |
manage any database |
manage database permissions |
数据库 |
manage security 权限 |
|
manage disk |
服务器 |
manage server 权限 |
|
manage dump configuration |
服务器 |
manage server 权限 |
|
manage lock promotion threshold |
服务器 |
manage server 权限 |
|
manage master key |
数据库 |
manage security 权限 |
manage any encryption key |
manage replication |
服务器 |
manage server 权限 |
|
manage resource limit |
服务器 |
manage server 权限 |
|
manage roles |
服务器 |
manage security 权限 |
|
manage security configuration |
服务器 |
manage security 权限 |
|
manage security permissions |
服务器 |
manage security 权限 |
特权名称 |
特权类型 |
管理方 (启用细化权限时) |
含义 |
manage server |
服务器 |
manage server 权限 |
|
manage server configuration |
服务器 |
manage server 权限 |
|
manage server permissions |
服务器 |
manage server 权限 |
|
manage service key |
数据库 |
manage security 权限 |
manage any encryption key |
map external file |
服务器 |
manage server 权限 |
|
monitor qp performance |
服务器 |
manage server 权限 |
|
monitor server replication |
服务器 |
manage server 权限 |
|
mount any database |
服务器 |
manage server 权限 |
|
own any database |
服务器 |
manage server 权限 |
|
online any database |
服务器 |
manage server 权限 |
|
online database (on database) |
服务器 |
manage server 权限 |
online any database |
online database (on sybsecurity) |
服务器 |
manage security 权限 |
|
own database (on database) |
服务器 |
manage server 权限 |
|
own database (on sybsecurity) |
服务器 |
manage security 权限 |
|
quiesce any database |
服务器 |
manage server 权限 |
|
references* |
对象 (列) |
manage any object 权限/对象 所有者 |
references any table |
references any table |
数据库 |
manage database 权限 |
|
report checkstorage |
数据库 |
manage database 权限 |
|
reorg any table |
数据库 |
manage database 权限 |
|
select* |
对象 |
manage any object 权限/对象 |
select any table (用于用户表 |
(列) |
所有者 |
或视图) |
|
select any audit table (用于审 |
|||
计表) |
|||
select any system catalog (用 |
|||
于系统表) |
|||
select any audit table |
数据库 |
manage database 权限 |
|
select any system catalog |
数据库 |
manage database 权限 |
|
select any table |
数据库 |
manage database 权限 |
|
set proxy* |
服务器 |
manage security 权限 |
|
set switch |
服务器 |
manage server 权限 |
|
set tracing* |
服务器 |
manage server 权限 |
set tracing (用于所有进程) |
set tracing any process |
服务器 |
manage server 权限 |
|
setuser* |
数据库 |
manage database 权限 |
|
show switch |
服务器 |
manage server 权限 |
|
shutdown |
服务器 |
manage server 权限 |
特权名称 |
特权类型 |
管理方 (启用细化权限时) |
含义 |
transfer any table |
数据库 |
manage database 权限 |
|
transfer table |
对象 |
manage any object 权限/对象 所有者 |
transfer any table |
truncate any audit table |
数据库 |
manage database 权限 |
|
truncate any table |
数据库 |
manage database 权限 |
|
truncate table* |
对象 |
manage any object 权限/对象 所有者 |
truncate any table |
unmount any database |
服务器 |
manage server 权限 |
|
update* |
对象 (列) |
manage any object 权限/对象 所有者 |
update any table |
update any security catalog |
服务器 |
manage security 权限 |
|
update any table |
数据库 |
manage database 权限 |
|
update statistics |
对象 |
manage any object 权限/对象 所有者 |
manage any statistics |
use any database |
服务器 |
manage server 权限 |
|
use database (on database) |
服务器 |
manage server 权限 |
use any database |
use database (on sybsecurity) |
服务器 |
manage security 权限 |
• 处理一项特权可能意味着处理另一项更加细化的特权。例如,用户 具有 select any table 特权意味着此用户对所有用户表均具有 select 权 限。对于具有隐含关系的特权对的完整列表,请参见 表 1-23。
• 授予以下数据库管理特权时,必须为每个特权指定 on database 子 句:checkpoint、dump database、load database、online database、own database。例如,要向 smith 授予对 db1 的 dump database 特权,可以 使用:
grant dump database on db1 to smith
可在同一授予命令中对不同的数据库授予不同的数据库管理特权。 例如,要向 smith 授予对 db1 的 own database 特权和对 db2 的 load database 特权,可以使用:
grant own database on db1, load database on db2 to smith
• 只能授予当前数据库中对象的权限。
• grant 和 revoke 命令须区别先后顺序。有冲突发生时,最近发出的语 句生效。
• 即便用户不具有对由过程或视图引用的对象的权限,他或她也可以 被授予该视图或存储过程的权限。请参见 《安全性管理指南》中的 “管理用户权限”。
• 无论为 declare cursor 语句所引用的基表或视图定义了何种权限, Adaptive Server 都授予所有用户声明游标的权限。游标不是作为 Adaptive Server 对象 (如表)定义的,因此不能对游标应用任何权 限。当用户打开游标时, Adaptive Server 会判断该用户对于定义该 游标的结果集的对象是否具有 select 权限。每次打开游标时它都会 检查权限。
如果用户有权访问游标所定义的对象, Adaptive Server 打开该游标 并允许用户使用该游标 fetch 行数据。 Adaptive Server 并不对每个 fetch 操作应用权限检查。但是,如果用户通过游标执行 delete 或 update,则会对游标结果集中所引用对象的数据的删除和更新操作 应用常规权限检查。
• grant 语句为每个接受此权限的用户、组或角色在 sysprotects 系统表 中添加一行。如果随后对用户或组的该权限执行 revoke 命令, Adaptive Server 会从 sysprotects 中删除相应的行。如果仅撤消了选 定的组成员的该权限,但并没有撤消获得此授权的整个组的该权 限, Adaptive Server 保留其初始行并为撤消的权限添加一个新行。
• 不同的授予者可为用户、组或角色授予相同的特权或权限。在此情 况下,表示同一特权或权限的多个相关授权的 sysprotects 将具有多 个行。如果稍后撤消一个或多个授权,则只要还有一个授权未撤 消,用户、组或角色就仍会具有特权或权限。
• 如果由于用户是某组的成员而继承了特定的权限,则在明确授予此 用户相同权限时,不会向 sysprotects 添加任何行。例如,如果已授 予 “public”对 authors 表中 phone 列的 select 权限,然后授予 John
(“ public”成员)对 authors 表的所有列的 select 权限。作为对 John 的 grant 的结果所添加到 sysprotects 中的行包含对 authors 表中除 phone 列之外的所有列的引用,因为他已经具有对这一列的权限。
• 在缺省情况下,会向用户授予发出 create trigger 命令的权限。当撤 消用户创建触发器的权限时,会在 sysprotects 表中为该用户添加一 个撤消行。若要向该用户授予发出 create trigger 命令的权限,必须 发出两个 grant 命令。第一个命令从 sysprotects 中删除撤消行;第二 个命令插入一个授予行。如果撤消了创建触发器的权限,则用户甚 至无法在自己拥有的表上创建触发器。撤消用户创建触发器的权限 只影响从中发出 revoke 命令的数据库。
• 使用以下系统过程可显示有关权限的信息:
• sp_helprotect 报告数据库对象、用户、组或角色的权限信息。
1> use pubs2
2> go
• sp_column_privileges 报告表或视图的一列或多列的权限信息。
• sp_table_privileges 报告表或视图的所有列的权限信息。
• sp_activeroles 显示 Adaptive Server 当前登录会话的所有活动角 色,以及这些角色所包含的所有角色。
• sp_displayroles 显示授予另一角色或用户的所有角色,或以表格 格式显示角色的整个层次树。
• 您可以用 sp_helprotect 来查看权限:
1> sp_helprotect
2> go
grantor |
grantee |
type |
action |
object |
column |
grantable |
------- |
------- |
---- |
------ |
------- |
------- |
--------- |
dbo public Grant Select sysalternates All FALSE
...
dbo Walter Grant DBCC DBCC dbcc checkdb FALSE
(1 row affected) (return status = 0)
• 不能将 grant with grant option 与 grant dbcc 一起使用。
授予角色的权限会替换授予用户或组的权限。例如,假定授予了 John 系统安全员角色,且 sso_role 被授予访问 sales 表的权限。如果撤消 John 访问 sales 表的个人权限,他仍可以访问 sales 表,因为他的角色权限覆 盖了他的个人权限。
然而, grant execute 权限不会阻止没有指定角色的用户被独立地授予存 储过程的执行权限。若要确保只有系统安全员才能被授予某个存储过程 的执行权限,可在该存储过程内使用 proc_role 系统函数。该函数检查调 用用户是否有执行过程的正确权限。请参见 proc_role。
grant all 对象创建特权
• 在数据库中使用不带对象名的 grant all 不会授予 create encryption key
权限。仅当细化权限禁用时,才支持不带对象名的 grant all。
• 不与对象名一起使用时, grant all 指派下列权限:create database、 create default、 create procedure、 create rule、 create table、 create function 和 create view。create database 权限仅由系统管理员授予,并 且仅在 master 数据库内授予。
• 只有数据库所有者和系统管理员可以使用不带对象名的 grant all 语 法来授予用户或组 create 命令权限。当数据库所有者使用 grant all 命 令时,会显示信息性消息,声明只有系统管理员才能授予 create database 权限。而上述所有其它权限都被授予。
• 所有对象所有者都可以使用含有对象名的 grant all 授予各自对象的 权限。当与表或视图名加上用户或组名一起使用时,grant all 启用对 表的 delete、delete statistics、insert、select、truncate table、update 和 update statistics 权限。
grant with grant option 规则
• 不能通过 with grant option 将权限授予 “public”或者授予组或角色。
• 在授予权限的过程中,如果禁用细化权限,则会将系统管理员视为 对象所有者。如果系统管理员授予操作另一用户的对象的权限,则 相应的所有者名称将作为授予者在 sysprotects 和 sp_helprotect 输出 中显示。启用细化权限时,授予者的名称将作为授予者出现在 sysobjects 中和 sp_helprotect 输出中。
• 不能使用 grant option 参数授予系统特权。
• 有关每个 grant 命令的信息保存在系统表 sysprotects 中,但有下列例 外情况:
• 如果同一授予者多次授予一个用户某一特定权限, Adaptive Server 会显示信息性消息。只有第一个 grant 记录被保留。
• 如果两个 grant 相同,只是其中有一个是以 with grant option 的形 式授予的,则保留 grant with grant option。
• 如果同一授予者的两个 grant 语句向特定用户授予对某一特定表 的相同权限,但针对不同的列,则 Adaptive Server 将这两个授 权视作同一语句。例如,以下 grant 语句是等效的:
grant select on titles (price, contract) to keiko
grant select on titles (advance) to keiko grant select on titles (price, contract,
advance) to keiko
使用 granted by
• 不允许使用 granted by 来授予谓词特权。
• 不要求 grantor 具有执行 grant 命令的权限。
• sysprotects.grantor 下列出的是授予者而非命令执行者。
• 使用 granted by 参数无需启用 enable granular permissions。
• 对于通过 with grant 选项收到对象的 grant 权限的用户,其不能发出
granted by 参数。所有其他用户均可发出 granted by 参数。
例如,如果 mary 使用 grant 选项将其备忘录的 select 权限授予 john, 则 john 尝试发出第二个 grant 命令时将收到错误消息。
Mary:
grant select on mary.books to john with grant option
John:
grant select on mary.books to joe granted by smith
• 用户组允许用一个语句对多个用户 grant 或 revoke 权限。每个用户都 可以是另一个组的成员,且始终是 “public”的成员。
• 可使用 sp_adduser 命令添加新用户并使用 sp_addgroup 命令创建组。 若要允许在 Adaptive Server 上有登录名的用户以受限特权使用数据 库,可使用 sp_adduser 添加一个 “guest”用户,并为 “guest”指 派受限的权限。所有具有登录名的用户可作为 “guest”访问该数据 库。”所有具有登录名的用户可作为 “guest”访问该数据库。
• 若要删除用户,请使用 sp_dropuser。若要删除组,请使用 sp_dropgroup。
若要向 “ public”之外的组添加新用户,请使用 sp_adduser。若要 更改已建立的用户组,请使用 sp_changegroup。
若要显示组成员,请使用 sp_helpgroup。
• 执行 sp_changegroup 以更改组成员资格时,它将通过执行以下命令 清除内存中的保护高速缓存:
这样就会用 sysprotects 表中的更新信息刷新高速缓存。若要直接修 改 sysprotects,请联系 Sybase 技术支持部门。
从任意数据库发出该命令时均可授予和撤消其缺省权限的系统表有:
• sysalternates
• sysattributes
• syscolumns
• syscomments
• sysconstraints
• sysdepends
• sysindexes
• sysjars
• syskeys
• syslogs
• sysobjects
• syspartitions
• sysprocedures
• sysprotects
• sysqueryplans
• sysreferences
• sysroles
• syssegments
• sysstatistics
• systabstats
• systhresholds
• systypes
• sysusermessages
• sysusers
• sysxtypes
此命令还进行以下更改:
• 撤消 public 的 syscolumns (encrkyid) 和 syscolumns (encrkydb) 权限。
• 撤消 public 的 syscolumns (encrkydb) 和 syscolumns (encrkyid) 权限。
• 撤消 public 的 sysobjects(audflags) 权限
• 将 sysobjects 的权限授予 sso_role
• 撤消 public 对 sysencryptkeys 的任何列的 select 权限
• 将对所有 sysencryptkeys 列的 select 权限授予 sso_role
• 将 syscolumns 的权限授予 sso_role
从 master 数据库发出该命令时可授予和撤消其缺省权限的系统表有:
• sysdatabases
• sysdevices
• syslocks
• sysmessages
• sysprocesses
• systransactions
• sysusages
• sysconfigures
• syscurconfigs
• syslanguages
• syscharsets
• sysservers
• systimeranges
• sysresourcelimits
• syslogins
• sysremotelogins
• syssessions
此命令还:
• 撤消 public 对 sysdatabases(audflags) 的 select 权限
• 撤消 public 对 sysdatabases(deftabaud) 的 select
• 撤消 public 对 sysdatabases(defvwaud) 的 select
• 撤消 public 的 sysdatabases(defpraud) 的 select
• 撤消 public 对 sysdatabases(audflags2) 的 select
• 将 sysdatabases 的 select 授予 sso_role
• 撤消 public 对 syslogins(password) 的 select 权限
• 撤消 public 对 syslogins(audflags) 的 select
• 撤消 public 对 syslogins(lpid) 的 select 权限
• 将对 syslogins 的 select 授予 sso_role
• 撤消 public 对 syslisteners(net_type) 的 select
• 撤消 public 对 syslisteners(address_info) 的 select
• 将对 syslisteners 的 select 授予 sso_role
• 撤消 public 对 syssrvroles(srid) 的 select
• 撤消 public 对 syssrvroles(name) 的 select
• 撤消 public 对 syssrvroles(password) 的 select
• 撤消 public 对 syssrvroles(pwdate) 的 select
• 撤消 public 对 syssrvroles(status) 的 select
• 撤消 public 对 syssrvroles(logincount) 的 select
• 将对 syssrvroles 的 select 授予 public
• 撤消 public 对 sysloginroles(suid) 的 select
• 撤消 public 对 sysloginroles(srid) 的 select
• 撤消 public 对 sysloginroles(status) 的 select
• 将对 sysloginroles 的 select 授予 sso_role
• 撤消 public 对 sysinstances(hostname) 的 select 权限
• 将对 sysinstances 的 select 权限授予 sso_role
授予 update statistics、 delete statistics 和 truncate table 权限
Adaptive Server 允许您向用户、角色和组授予对 update statistics、 delete statistics 和 truncate table 命令的权限。通过将 update statistics、 delete statistics 和 truncate table 添加到一个存储过程,然后将此过程的执行权限 授予用户或角色,表所有者也可以通过隐式 grant 提供权限。
不能在列级授予 update statistics 权限。必须具有 sso_role 才能在 sysroles、 syssrvroles 和 sysloginroles 安全表上运行 update statistics 或 delete statistics。
缺省情况下,具有 sa_role 的用户有权在除 sysroles、 syssrvroles 和 sysloginroles 之外的系统表上运行 update statistics 和 delete statistics,并且 可以将此特权转交给其他用户。
还可以发出 grant all 授予 update statistics、 delete statistics 和 truncate table
的权限。
注释 一旦授予用户执行 update statistics 的权限,其即具有执行此命令 的各种变化形式的权限,如 update all statistics、 update partition statistics、 update index statistics、update table statistics 等。例如,以下命令授予 Billy 在 authors 表上运行 update statistics 的各种变化形式的权限:
grant update statistics on authors to billy
如果撤消用户执行 update statistics 的权限,也就撤消了他们执行此命令 的各种变化形式的能力。
不能单独授予 update statistics 的变化形式 (例如, update index statistics)。也就是说,不能发出以下命令:
grant update all statistics to harry
但是,可以编写存储过程来控制谁执行这些命令。例如,以下命令授予
Billy 在 authors 表上执行 update index statistics 的权限:
create proc sp_ups as
update index statistics on authors go
revoke update statistics on authors from billy go
grant execute on sp_ups to billy
不能在列级授予和撤消 delete statistics 权限。
尽管 Adaptive Server 将 truncate table 作为一个全局、杂类审计进行审 计,但是它不审计 update statistics。为了使 truncate table 和 update statistics 的审计追踪保持清晰明了, Sybase 建议您在授予用户执行权限 的存储过程中包括这两条命令,如上所述。
授予代理和会话授权
• 授予执行 set proxy 或 set session authorization 的权限允许被授予者在 Adaptive Server 中充当另一个登录。 set proxy 和 set session authorization 相同,只是 set session authorization 遵循 SQL 标准,而 set proxy 是 Transact-SQL 扩展。
• 要授予 set proxy 或 set session authorization 权限,您必须处于 master
数据库中。
• 在 grant set proxy 命令中指定的名称必须是数据库中的有效用户,即 必须是数据库的 sysusers 表中的名称。
• grant all 并不包括 set proxy 或 set session authorization 权限。
• 可以用 grant set proxy 逐步限制角色。例如,可以先限制 sa_role,然 后再限制 sso_role:
grant set proxy to joe restrict role sa_role grant set proxy to joe restrict role sso_role
• 不能对单个角色不限制。必须撤消 set proxy 才能撤消所有角色的权 限。
在共享磁盘集群中授予权限
如果尝试在本地临时数据库中向用户定义的角色授予权限,则 grant 将 失败。
授予角色的权限会替换授予用户或组的权限。例如,假定授予了 John 系统安全员角色,且 sso_role 被授予访问 sales 表的权限。如果撤消 John 访问 sales 表的个人权限,他仍可以访问 sales 表,因为他的角色权限覆 盖了他的个人权限。
然而, grant execute 权限不会阻止没有指定角色的用户被独立地授予存 储过程的执行权限。若要确保只有系统安全员才能被授予某个存储过程 的执行权限,可在该存储过程内使用 proc_role 系统函数。该函数检查调 用用户是否有执行过程的正确权限。请参见 proc_role。
撤消 public 或组的特权
撤消 “public”或组的特定权限同样会撤消被单独授予此权限的用户的 该权限。例外情况是谓词特权的授予和撤消。请参见 《安全性管理指 南》中的 “Adaptive Server 如何将谓词特权保存在 sysprotects 中”
标准 符合 ANSI SQL 的级别符合初级标准。grant dbcc 也是 Transact-SQL 扩展。
grant dbcc 以及授予组权限和授予 set proxy 都是 Transact-SQL 扩展。授予
set session authorization (功能与 set proxy 相同)符合 ANSI 标准。
权限 对 grant 的权限检查因您的细化权限设置而异。
细化权限已启用 在启用细化权限的情况下,用户通常可以使用下列特权管理特权之一来执行
grant 命令,具体视被授予的特权或权限而定。
对于服务器范围特权,您必须是具有 manage server permissions 特权或 manage security permissions 特权的用户。
对于数据库范围特权,您必须是具有 manage database permissions 特权的用户。
对于对象特权,您必须是对象所有者或具有 manage any object permission 特权 的用户。
要执行 grant default,您必须是数据库所有者或对数据库具有 own database 特 权的用户。
有关详细信息,请参见 表 1- 23 “管理方 (启用细化权限时)”一列。 细化权限已禁用 在禁用细化权限的情况下,可授予的系统特权限于 create database、 create
default、 create function、 create procedure、 create rule、 create table、 create
view、 connect、 set proxy 和 set tracing
命令执行 – 只有系统管理员才能授予 create database、connect 和 set tracing 权 限,且只能在 master 数据库中授予这些权限。只有系统安全员可以授予 create trigger 权限。
要执行 grant default,您必须是数据库所有者或具有 sa_role 的用户。 数据库一致性检查 – 只有系统管理员才能运行 grant dbcc 命令。
数据库对象访问权授予 – 缺省情况下,数据库对象的权限授予给对象所有 者。对象所有者可将其自己的数据库对象的权限授予其他用户。
函数 – 只有系统管理员才能授予对内置函数的权限。
加密列 – 只有系统安全员和密钥管理者才具有创建加密密钥的隐式权限。
代理和会话授权 – 只有系统安全员才能授予 set proxy 或 set session authorization 权限,且只能在 master 数据库中授予这些权限。授予执行 set proxy 或 set session authorization 的权限允许被授予者在服务器中充当另一个登 录。 set proxy 和 set session authorization 相同,只是 set session authorization 遵 循 ANSI92 标准,而 set proxy 是 Transact-SQL 扩展。
系统表 – 数据库所有者可授予对系统表的缺省权限。
审计 sysaudits 的 event 和 extrainfo 列中的值如下:
事件 |
审计选项 |
审计的命令或访问权限 |
extrainfo 中的信息 |
40 |
grant |
grant |
• 角色 – 当前活动角色 |
• 关键字或选项 – grant 语句的完整命令文本 |
|||
• 先前值 – NULL |
|||
• 当前值 – NULL |
|||
• 其它信息 – NULL |
|||
• 代理信息 – set proxy 有效时的初始登录名 |
另请参见 目录存储过程 sp_column_privileges, sp_table_privileges.
命令 create role, revoke, setuser, set.
函数 proc_role 、 show_role .
系统过程 sp_addgroup, sp_adduser, sp_changedbowner, sp_changegroup, sp_dropgroup, sp_dropuser, sp_helpgroup, sp_helprotect, sp_helpuser, sp_role.
Sybase SQL Anywhere数据库恢复工具ReadASADB:
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具: ReadASADB。此工具支持ASA v5.0, v6.0, v7.0, v8.0, v9.0, v10.0, v11.0, v12.0, v16.0, v17.0等版本。
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具。
恢复Sybase SQL Anywhere的工具在国内处于领先水平。
Sybase SQL Anywhere数据库恢复工具ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具
- 适用于所有的SQL Anywhere版本 包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x,16.x,17.x
- 适用于所有的UltraLite版本
- 能够恢复出来表结构和数据
- 能够恢复自定义数据类型
- 能够恢复存储过程等对象的语法
- 能够导出到目标数据库
- 能够导出到SQL文件并生成导入脚本
- 支持多种字符集,包括:cp850、cp936、gb18030、utf8等
- 能够恢复未加密或者简单加密类型的数据
- 简单易用
- 限制:不支持AES加密的数据文件
SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍
Sybase SQL Anywhere数据库恢复工具ReadASADB适用场景
各种误操作:
- 误截断表(truncate table)
- 误删除表(drop table)
- 错误的where条件误删数据
- 误删除db或log文件
- 误删除表中的字段
Sybase SQL Anywhere数据库恢复工具ReadASADB的应用场景:
1.因为物理磁盘故障、操作系统、系统软件方面或者掉电等等原因导致的Sybase SQL Anywhere数据库无法打开的情况;
2.误操作,包括truncate table,drop table,不正确的where条件导致的误删除等;
Sybase SQL Anywhere无法打开时,比较常见的错误是:Assertion failed。
如:
1、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Checkpoint log: invalid bitmap page -- transaction rolled back
2、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Page number on page does not match page requested -- transaction rolled back
3、Internal database error *** ERROR *** Assertion failed:200502 (9.0.2.2451) Checksum failure on page 23 -- transaction rolled back
4、File is shorter than expected
5、Internal database error *** ERROR *** Assertion failed: 201116 Invalid free list index page found while processing checkpoint log -- transaction rolled back
6、*** ERROR *** Assertion failed: 51901 Page for requested record not a table page or record not present on page
7、*** ERROR *** Assertion failed: 201417 (7.0.4.3541) Invalid count or free space offset detected on a table page
8、Internal database error *** ERROR *** Assertion failed: 201425 (8.0.3.5594) Invalid count or free space offset detected on a free list page -- transaction rolled back.
9、Internal database error *** ERROR *** Assertion failed: 100702 (8.0.1.2600) Unable to modify indexes for a row referenced in rollback log -- transaction rolled back
Sybase ASE数据库恢复工具READSYBDEVICE:
一个不依赖数据库管理系统、直接从Sybase数据库设备文件上提取数据的业内领先的恢复工具!能够从损坏的Sybase ASE设备文件(.dat)上提取数据的非常规恢复工具。
Sybase ASE数据库恢复工具READSYBDEVICE的主要功能:
- 被勒索病毒加密数据文件及备份文件情况下的恢复;
- 系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下的恢复;
- 因断电、硬盘坏道等造成数据库文件损坏情况下的恢复;
- delete数据恢复、误update数据恢复、误删除表(drop)恢复、误truncate表恢复 等;
- 各种Sybase内部系统表损坏、索引错误的修复;
- master数据库损坏而无法正常运行情况下的恢复;
- Sybase数据库被标记为可疑,不可用等情况的恢复;
- Sybase数据库中数据文件内部出现坏块情况下的恢复;
- Sybase数据库无数据文件但有日志文件的情况下的恢复;
- Sybase数据库只有数据文件无任何日志文件的情况下的恢复;
- Sybase数据文件被误删除情况下的碎片提取恢复;
- 磁盘阵列上的Sybase数据库被误格式化情况下的数据库恢复;
- 数据库sysobjects等系统表损坏无法正常应用情况下的恢复;
- Sybase数据库还原数据库出现失败情况下的恢复;
- Sybase数据库只剩下损坏的备份文件情况下的恢复。
Sybase ASE数据库恢复工具READSYBDEVICE支持的版本:
Sybase ASE 11.0.x,11.5.x,11.9.x,12.0.x,12.5.x,15.0.x,15.5.x,15.7.x,16.0.xSQL Server数据库恢复工具SQLRescue:
一个不依赖数据库管理系统、直接从SQL Server数据库文件上提取数据的业内领先的恢复工具!能够从损坏的SQL Server数据库文件(.mdf)上提取数据的非常规恢复工具。
SQL Server数据库恢复工具SQLRescue的主要功能:
- 系统崩溃只剩下数据文件的情况下的恢复,即无日志文件或者日志文件损坏情况下的恢复;
- 断电导致数据库文件损坏情况下的恢复;
- 硬盘坏道造成数据库损坏情况下的恢复;
- 数据文件内部存在坏页情况下的恢复;
- 企业管理器误删除数据表记录,管理软件误删除数据表记录的恢复;
- 并闩锁错误、格式化、误删除后导致软件不能使用的情况;
- 无法读取并闩锁页sysindexes失败情况下的修复;
- 数据文件被误删除情况下的碎片提取恢复;
- 系统表损坏、索引错误、误删除数据库表、删除记录的数据找回;
- master数据库损坏而无法正常运行情况下的恢复;
- 数据文件无法附加情况下的数据恢复;
- 数据库被标记为可疑,质疑,不可用等情况的恢复;
- 数据库sysobjects等系统表损坏情况下的恢复;
- 数据被误(drop、delete、truncate)删除表数据的恢复,误update后的数据恢复等;
- 还原时报一致性错误,错误823等情况下的数据恢复,各种错误提示的数据库文件修复;
- 数据库被误格式化等情况下的数据库恢复;
- 日志收缩造成数据库损坏情况下的恢复;
- 仅剩损坏的备份文件情况下的恢复。
SQL Server数据库恢复工具SQLRescue技术特点:
只要SQL Server数据库的数据文件存在,我们就有办法帮您从数据文件中找回重要数据。- 从数据文件中直接恢复数据
- 不能附加时直接恢复数据并生成新的数据库
- 系统表损坏的数据库修复
- 快速修复SQL 823错误、连接中断错误
SQL Server数据库恢复工具SQLRescue支持的版本:
Microsoft SQL Server 7.0, 2000, 2005, 2008, 2008R2, 2012, 2014, 2016, 2017,2019。+-------------------------------------华丽的分割线-------------------------------------------------------------------------