GRANT 服务器权限 (Transact-SQL)

授予服务器的权限。

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 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

适用范围:SQL Server(SQL Server 2012 到当前版本)。

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

适用范围:SQL Server(SQL Server 2012 到当前版本)。

CONTROL SERVER

ALTER RESOURCES

CONTROL SERVER

ALTER SERVER STATE

CONTROL SERVER

ALTER SETTINGS

CONTROL SERVER

ALTER TRACE

CONTROL SERVER

AUTHENTICATE SERVER

CONTROL SERVER

CONNECT ANY DATABASE

适用范围:SQL Server(SQL Server 2014 到当前版本)。

CONTROL SERVER

CONNECT SQL

CONTROL SERVER

CONTROL SERVER

CONTROL SERVER

CREATE ANY DATABASE

ALTER ANY DATABASE

CREATE AVAILABILITY GROUP

适用范围:SQL Server(SQL Server 2012 到当前版本)。

ALTER ANY AVAILABILITY GROUP

CREATE DDL EVENT NOTIFICATION

ALTER ANY EVENT NOTIFICATION

CREATE ENDPOINT

ALTER ANY ENDPOINT

CREATE SERVER ROLE

适用范围:SQL Server(SQL Server 2012 到当前版本)。

ALTER ANY SERVER ROLE

CREATE TRACE EVENT NOTIFICATION

ALTER ANY EVENT NOTIFICATION

EXTERNAL ACCESS ASSEMBLY

CONTROL SERVER

IMPERSONATE ANY LOGIN

适用范围:SQL Server(SQL Server 2014 到当前版本)。

CONTROL SERVER

SELECT ALL USER SECURABLES

适用范围:SQL Server(SQL Server 2014 到当前版本)。

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

备注

SQL Server 2014 中添加了以下三个服务器权限。

  • CONNECT ANY DATABASE 权限
    将 CONNECT ANY DATABASE 授予某个登录名,该登录名必须连接到当前存在的所有数据库和将来可能创建的任何新数据库。 不要在任何数据库中授予超过连接的任何权限。 与 SELECT ALL USER SECURABLES 或 VIEW SERVER STATE 结合使用,可以允许审核进程查看所有数据或 SQL Server 实例上的所有数据库状态。

  • IMPERSONATE ANY LOGIN 权限
    授予后,当连接到数据库时,允许中间层进程模拟连接到它的客户端帐户。 被拒绝时,高特权的登录名可以阻止模拟其他登录名。 例如,具有 CONTROL SERVER 权限的登录名可以阻止模拟其他登录名。

  • SELECT ALL USER SECURABLES 权限
    授予后,作者等登录名可以查看用户可连接到的所有数据库中的数据。 被拒绝时,阻止访问对象,除非这些对象处于 sys 架构中。

权限

授权者(或使用 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

请参阅

参考

GRANT (Transact-SQL)

DENY (Transact-SQL)

DENY 服务器权限 (Transact-SQL)

REVOKE 服务器权限 (Transact-SQL)

sys.fn_builtin_permissions (Transact-SQL)

sys.fn_my_permissions (Transact-SQL)

HAS_PERMS_BY_NAME (Transact-SQL)

概念

权限层次结构(数据库引擎)

主体(数据库引擎)

权限(数据库引擎)