GRANT 服务器权限 (Transact-SQL)
授予服务器的权限。
语法
GRANT permission [ ,...n ]
TO <grantee_principal> [ ,...n ] [ WITH GRANT OPTION ]
[ 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 <grantee_principal>
指定要向其授予权限的主体。AS <grantor_principal>
指定执行此查询的主体要从哪个主体派生其授予该权限的权限。WITH GRANT OPTION
指示该主体还可以向其他主体授予所指定的权限。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 时,才能授予服务器作用域内的权限。
可以在 sys.server_permissions 目录视图中查看有关服务器权限的信息;在 sys.server_principals 目录视图中查看有关服务器主体的信息; 以及在 sys.server_role_members 目录视图中查看有关服务器角色成员身份的信息。
服务器是权限层次结构的最高级别。 下表列出了可授予的对服务器最为具体的限定权限。
服务器权限 |
服务器权限隐含的权限 |
---|---|
ADMINISTER BULK OPERATIONS |
CONTROL SERVER |
ALTER ANY AVAILABILITY GROUP |
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 AVAILABILITY GROUP |
ALTER ANY AVAILABILITY GROUP |
CREATE DDL EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
CREATE ENDPOINT |
ALTER ANY ENDPOINT |
CREATE SERVER ROLE |
ALTER ANY SERVER ROLE |
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 |
权限
授权者(或使用 AS 选项指定的主体)必须具有使用 GRANT OPTION 授予的权限本身,或具有隐含授予该权限的更高权限。 sysadmin 固定服务器角色的成员可以授予任何权限。
示例
A.为登录名授予权限
以下示例将 CONTROL SERVER 权限授予 SQL Server 登录名 TerryEminhizer。
USE master;
GRANT CONTROL SERVER TO TerryEminhizer;
GO
B.授予具有 GRANT 权限的权限
以下示例为 SQL Server 登录名 JanethEsteves 授予 ALTER ANY EVENT NOTIFICATION 权限以及为其他登录名授予该权限的权限。
USE master;
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;
GO
C.为服务器角色授予权限
以下示例创建两个名为 ITDevAdmin 和 ITDevelopers 的服务器角色。 它为用户定义的服务器角色 ITDevAdmin 授予 ALTER ANY DATABASE 权限(包括 WITH GRANT 选项),以便 ITDevAdmin 服务器角色可以重新分配 ALTER ANY DATABASE 权限。 然后,该示例为 ITDevelopers 授予权限以使用 ITDevAdmin 服务器角色的 ALTER ANY DATABASE 权限。
USE master;
CREATE SERVER ROLE ITDevAdmin ;
CREATE SERVER ROLE ITDevelopers ;
GRANT ALTER ANY DATABASE TO ITDevAdmin WITH GRANT OPTION ;
GRANT ALTER ANY DATABASE TO ITDevelopers AS ITDevAdmin ;
GO
请参阅
参考
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)