GRANT服务器权限命令
为主体授予安全对象的权限。 一般概念是 GRANT <某种权限> ON <某个对象> TO <某个用户、登录名或组>。 有关权限的一般讨论,请参阅权限(数据库引擎)。
语法
Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
| permission [ ( column [ ,...n ] ) ] [ ,...n ]
[ ON [ class :: ] securable ] TO principal [ ,...n ]
[ WITH GRANT OPTION ] [ AS principal ]
参数
不推荐使用此选项,保留此选项仅用于向后兼容。 它不会授予所有可能的权限。 授予 ALL 参数相当于授予以下权限。
- 如果安全对象是数据库,则 ALL 对应 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE VIEW。
- 如果安全对象是标量函数,则 ALL 对应 EXECUTE 和 REFERENCES。
- 如果安全对象是表值函数,则 ALL 对应 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
- 如果安全对象是存储过程,则 ALL 表示 EXECUTE。
- 如果安全对象是表,则 ALL 对应 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
- 如果安全对象是视图,则 ALL 对应 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
PRIVILEGES
包含此参数是为了符合 ISO 标准。 请不要更改 ALL 的行为。
permission
权限的名称。 下面列出的子主题介绍了不同权限与安全对象之间的有效映射。
column
指定表中将授予权限的列的名称。 需要使用圆括号 ()。
class
指定将授予权限的安全对象的类。 需要使用作用域限定符 ::。
securable
指定将授予权限的安全对象。
TO principal
主体的名称。 可为其授予安全对象权限的主体随安全对象而异。 有关有效的组合,请参阅下面列出的子主题。
GRANT OPTION
指示被授权者在获得指定权限的同时还可以将指定权限授予其他主体。
作为 principal
指定一个主体,执行该查询的主体从该主体获得授予该权限的权限。
注释
GRANT 语句的完整语法非常复杂。 上面的语法关系图进行了简化以突出其结构。 下面列出的主题介绍了在授予特定安全对象权限时使用的完整语法。
REVOKE 语句可用于删除已授予的权限,DENY 语句可用于防止主体通过 GRANT 获得特定权限。
授予权限将删除对所指定安全对象的相应权限的 DENY 或 REVOKE 权限。如果在包含该安全对象的更高级别拒绝了相同的权限,则 DENY 优先。但是,在更高级别撤消已授予权限的操作并不优先。
数据库级权限在指定的数据库范围内授予。 如果用户需要另一个数据库中的对象的权限,请在该数据库中创建用户帐户,或者授权用户帐户访问该数据库以及当前数据库。
注意 |
表级 DENY 并不优先于列级 GRANT。 保留了权限层次结构中这种不一致性以保持向后兼容。 未来的版本会将其删除。 |
sp_helprotect 系统存储过程报告数据库级安全对象的权限。
WITH GRANT OPTION
GRANT …WITH GRANT OPTION在接收权限的主体是某一角色或某一 Windows 组时,如果需要进一步将对象权限授予不是该组或角色的成员的用户,则必须使用AS 因为只有用户(而非某个组或角色)才能执行 GRANT 语句,所以,在授予权限时,该组或角色的特定成员必须使用AS下面的示例说明如何在授予角色或 Windows 组时使用 WITH GRANT OPTION。
-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION
EXEC sp_addrolemember TesterRole, User1;
-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestMe TO User2;
-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestMe TO User2 AS TesterRole;
SQL Server 权限图
有关 pdf 格式的所有数据库引擎权限的海报大小图表,请参阅 http://go.microsoft.com/fwlink/?LinkId=229142。
权限
授权者(或用 AS 选项指定的主体)自身必须具有此权限(带 GRANT OPTION),或具有隐含所授予权限的更高权限。如果使用 AS 选项,则还应满足其他要求。有关详细信息,请参阅特定于安全对象的主题。
对象所有者可以授予对其所拥有的对象的权限。 对某安全对象具有 CONTROL 权限的主体可以授予对该安全对象的权限。
被授予 CONTROL SERVER 权限的用户(例如 sysadmin 固定服务器角色的成员)可以授予对相应服务器中任一个安全对象的任意权限。被授予数据库的 CONTROL 权限的用户(例如 db_owner 固定数据库角色的成员)可以授予数据库中任何安全对象的任意权限。被授予架构的 CONTROL 权限的用户可以授予架构中任何对象的任意权限。
示例
下表列出了安全对象以及描述特定于安全对象的语法的主题。
应用程序角色 | |
程序集 | |
非对称密钥 | |
可用性组 | |
证书 | |
约定 | |
数据库 | |
端点 | |
全文目录 | |
全文非索引字表 | |
函数 | |
登录 | |
消息类型 | |
对象 | |
队列 | |
远程服务绑定 | |
角色 | |
路由 | |
架构 | |
搜索属性列表 | |
服务器 | |
服务 | |
存储过程 | |
对称密钥 | |
同义词 | |
系统对象 | |
表 | |
类型 | |
用户 | |
视图 | |
XML 架构集合 |
REVOKE服务器权限命令
删除服务器级 GRANT 和 DENY 权限。
语法
REVOKE [ GRANT OPTION FOR ] permission [ ,...n ]
{ TO | FROM } <grantee_principal> [ ,...n ]
[ CASCADE ]
[ AS <grantor_principal> ]
<grantee_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
<grantor_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
参数
permission
指定可对服务器授予的权限。 有关权限的列表,请参阅本主题后面的“备注”部分。
{ TO | FROM } <grantee_principal>
指定要从中撤消权限的主体。
AS <grantor_principal>
指定执行此查询的主体要从哪个主体派生其撤消该权限的权限。
GRANT OPTION FOR
指示要撤消为其他主体授予指定权限的权限。 不会撤消该权限本身。
重要提示 |
如果主体具有不带 GRANT 选项的指定权限,则将撤消该权限本身。 |
CASCADE
指示要撤消的权限也会从此主体授予或拒绝该权限的其他主体中撤消。
注意 |
如果对授予了 WITH GRANT OPTION 权限的权限执行级联撤消,将同时撤消该权限的 GRANT 和 DENY 权限。 |
SQL_Server_login
指定 SQL Server 登录名。
SQL_Server_login_mapped_to_Windows_login
指定映射到 Windows 登录名的 SQL Server 登录名。
SQL_Server_login_mapped_to_Windows_group
指定映射到 Windows 组的 SQL Server 登录名。
SQL_Server_login_mapped_to_certificate
指定映射到证书的 SQL Server 登录名。
SQL_Server_login_mapped_to_asymmetric_key
指定映射到非对称密钥的 SQL Server 登录名。
server_role
指定用户定义的服务器角色。
注释
只有在当前数据库为 master 时,才能撤消服务器作用域内的权限。
REVOKE 操作可同时删除 GRANT 和 DENY 权限。
可以使用 REVOKE GRANT OPTION FOR 撤消重新授予指定权限的权限。如果主体所具有的权限还带有授予该权限的权限,则将撤消授予该权限的权限,而不会撤消权限本身。但是,如果主体具有不带 GRANT 选项的指定权限,则会撤消权限本身。
可以在 sys.server_permissions 目录视图中查看有关服务器权限的信息;在 sys.server_principals 目录视图中查看有关服务器主体的信息; 以及在 sys.server_role_members 目录视图中查看有关服务器角色成员身份的信息。
服务器是权限层次结构的最高级别。 下表列出了可撤消的对服务器最为具体的限定权限。
服务器权限 | 服务器权限隐含的权限 |
ADMINISTER BULK OPERATIONS | CONTROL SERVER |
ALTER ANY CONNECTION | CONTROL SERVER |
ALTER ANY CREDENTIAL | CONTROL SERVER |
ALTER ANY DATABASE | CONTROL SERVER |
ALTER ANY ENDPOINT | CONTROL SERVER |
ALTER ANY EVENT NOTIFICATION | CONTROL SERVER |
ALTER ANY EVENT SESSION | CONTROL SERVER |
ALTER ANY LINKED SERVER | CONTROL SERVER |
ALTER ANY LOGIN | CONTROL SERVER |
ALTER ANY SERVER AUDIT | CONTROL SERVER |
ALTER ANY SERVER ROLE | CONTROL SERVER |
ALTER RESOURCES | CONTROL SERVER |
ALTER SERVER STATE | CONTROL SERVER |
ALTER SETTINGS | CONTROL SERVER |
ALTER TRACE | CONTROL SERVER |
AUTHENTICATE SERVER | CONTROL SERVER |
CONNECT SQL | CONTROL SERVER |
CONTROL SERVER | CONTROL SERVER |
CREATE ANY DATABASE | ALTER ANY DATABASE |
CREATE DDL EVENT NOTIFICATION | ALTER ANY EVENT NOTIFICATION |
CREATE ENDPOINT | ALTER ANY ENDPOINT |
CREATE TRACE EVENT NOTIFICATION | ALTER ANY EVENT NOTIFICATION |
EXTERNAL ACCESS ASSEMBLY | CONTROL SERVER |
SHUTDOWN | CONTROL SERVER |
UNSAFE ASSEMBLY | CONTROL SERVER |
VIEW ANY DATABASE | VIEW ANY DEFINITION |
VIEW ANY DEFINITION | CONTROL SERVER |
VIEW SERVER STATE | ALTER SERVER STATE |
权限
要求具有 CONTROL SERVER 权限,或者具有 sysadmin 固定服务器角色的成员身份。
示例
A.从登录名中撤消权限
以下示例从 SQL Server 登录名 WanidaBenshoof 中撤消VIEW SERVER STATE
USE master; REVOKE VIEW SERVER STATE FROM WanidaBenshoof; GO
B.撤消 WITH GRANT 选项
以下示例从 SQL Server 登录名 JanethEsteves 中撤消授予CONNECT SQL
USE master; REVOKE GRANT OPTION FOR CONNECT SQL FROM JanethEsteves; GO
该登录名仍然具有 CONNECT SQL 权限,但是不能将该权限再授予其他主体。
DENY 服务器权限命令
拒绝为主体授予权限。 防止该主体通过组或角色成员身份继承权限。
Simplified syntax for DENY
DENY { ALL [ PRIVILEGES ] }
| permission [ ( column [ ,...n ] ) ] [ ,...n ]
[ ON [ class :: ] securable ] TO principal [ ,...n ]
[ CASCADE] [ AS principal ]
参数
该选项不拒绝所有可能权限。 拒绝 ALL 相当于拒绝下列权限。
- 如果安全对象是数据库,则 ALL 对应 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE VIEW。
- 如果安全对象是标量函数,则 ALL 对应 EXECUTE 和 REFERENCES。
- 如果安全对象是表值函数,则 ALL 对应 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
- 如果安全对象是存储过程,则 ALL 表示 EXECUTE。
- 如果安全对象是表,则 ALL 对应 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
- 如果安全对象是视图,则 ALL 对应 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
注意 |
不推荐使用 DENY ALL 语法。 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。应改为拒绝特定权限。 |
PRIVILEGES
包含此参数是为了符合 ISO 标准。 请不要更改 ALL 的行为。
permission
权限的名称。 下面列出的子主题介绍了不同权限与安全对象之间的有效映射。
column
指定表中拒绝授予其权限的列名。 需要使用圆括号 ()。
class
指定拒绝授予其权限的安全对象的类。 需要使用作用域限定符 ::。
securable
指定拒绝授予其权限的安全对象。
TO principal
主体的名称。 可以对其拒绝安全对象权限的主体随安全对象而异。 有关有效的组合,请参阅下面列出的特定于安全对象的主题。
CASCADE
指示拒绝授予指定主体该权限,同时,对该主体授予了该权限的所有其他主体,也拒绝授予该权限。当主体具有带 GRANT OPTION 的权限时,为必选项。
作为 principal
指定一个主体,执行该语句的主体从该主体获得拒绝授予该权限的权限。
注释
DENY 语句的完整语法很复杂。 上面的语法关系图进行了简化以突出其结构。 下列主题说明了用于拒绝授予特定安全对象的权限的完整语法。
如果在拒绝为主体授予某种权限时未指定 CASCADE,而之前为该主体授予此权限时指定了 GRANT OPTION,则 DENY 将失败。
sp_helprotect 系统存储过程报告数据库级安全对象的权限。
注意 |
表级 DENY 并不优先于列级 GRANT。 保留了权限层次结构中这种不一致性以保持向后兼容。 未来的版本会将其删除。 |
注意 |
拒绝授予数据库 CONTROL 权限将隐式拒绝授予该数据库 CONNECT 权限。如果拒绝授予某一主体对某一数据库的 CONTROL 权限,该主体将无法连接到该数据库。 |
注意 |
拒绝授予 CONTROL SERVER 权限将隐式拒绝授予对服务器的 CONNECT SQL 权限。如果拒绝授予某一主体对某一服务器的 CONTROL SERVER 权限,该主体将无法连接到该服务器。 |
权限
调用方(或使用 AS 选项指定的主体)必须对安全对象具有 CONTROL 权限,或对该安全对象具有隐含 CONTROL 权限的更高权限。如果使用 AS 选项,那么指定主体必须拥有其权限被拒绝授予的安全对象。
被授予 CONTROL SERVER 权限的用户(如 sysadmin 固定服务器角色的成员)可以拒绝授予服务器中的任何安全对象的任意权限。被授予数据库的 CONTROL 权限的用户(如 db_owner 固定数据库角色的成员)可以拒绝授予数据库中的任何安全对象的任意权限。被授予架构 CONTROL 权限的用户可以拒绝对架构中任何对象授予权限。 如果使用 AS 子句,那么指定主体必须拥有其权限被拒绝授予的安全对象。
示例
下表列出了安全对象以及描述特定于安全对象的语法的主题。
应用程序角色 | |
程序集 | |
非对称密钥 | |
可用性组 | |
证书 | |
约定 | |
数据库 | |
端点 | |
全文目录 | |
全文非索引字表 | |
函数 | |
登录 | |
消息类型 | |
对象 | |
队列 | |
远程服务绑定 | |
角色 | |
路由 | |
架构 | |
搜索属性列表 | |
服务器 | |
服务 | |
存储过程 | |
对称密钥 | |
同义词 | |
系统对象 | |
表 | |
类型 | |
用户 | |
视图 | |
XML 架构集合 |