适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Microsoft Fabric中的SQL分析端点
Microsoft Fabric中的仓库
Microsoft Fabric中的SQL数据库
授予对 SQL Server 中的数据库的权限。
Syntax
GRANT <permission> [ ,...n ]
TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
[ AS <database_principal> ]
<permission>::=
permission | ALL [ PRIVILEGES ]
<database_principal> ::=
Database_user
| Database_role
| Application_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
| Database_user_mapped_to_certificate
| Database_user_mapped_to_asymmetric_key
| Database_user_with_no_login
Arguments
permission 指定可对数据库授予的权限。 有关权限的列表,请参阅本主题后面的“备注”部分。
ALL 该选项并不授予全部可能的权限。 授予 ALL 等同于授予以下权限:BACKUPDATABASE、 BACKUP LOG、CREATE DEFAULT、CREATE FUNCTION、 CREATE PROCEDURECREATE RULECREATE TABLECREATE VIEW和 。
包含 PRIVILEGES 是为了符合 ANSI-92 标准。 请不要更改 ALL 的行为。
WITH GRANT OPTION 表示委托人还将被赋予授予其他委托人指定权限的能力。
AS <database_principal> 指定一个主体,执行该查询的主体从该主体获得授予该权限的权利。
Database_user 指定数据库用户。
Database_role 指定数据库角色。
Application_role 适用于:SQL Server 2008 (10.0.x) 及更高版本、SQL 数据库
指定应用程序角色。
Database_user_mapped_to_Windows_User 适用于:SQL Server 2008 (10.0.x) 及更高版本
指定映射到 Windows 用户的数据库用户。
Database_user_mapped_to_Windows_Group 适用于:SQL Server 2008 (10.0.x) 及更高版本
指定映射到 Windows 组的数据库用户。
Database_user_mapped_to_certificate 适用于:SQL Server 2008 (10.0.x) 及更高版本
指定映射到证书的数据库用户。
Database_user_mapped_to_asymmetric_key 适用于:SQL Server 2008 (10.0.x) 及更高版本
指定映射到非对称密钥的数据库用户。
Database_user_with_no_login 指定无相应服务器级主体的数据库用户。
Remarks
Important
在某些情况下,如果同时拥有 ALTER 权限和 REFERENCE 权限,被授权者将可以查看数据或执行未经授权的函数。 例如:对表拥有 ALTER 权限和对函数拥有 REFERENCE 权限的用户可对函数创建计算列并执行该函数。 在此情况下,用户必须还对计算列具有 SELECT 权限。
数据库是安全对象,包含于权限层次结构中作为其父级的服务器中。 下表列出了可授予的对数据库最为具体的限定权限,以及隐含这些权限的更为通用的权限。
| 数据库权限 | 数据库权限隐含的权限 | 服务器权限隐含的权限 |
|---|---|---|
| 管理 DATABASE 批量操作 适用对象:SQL 数据库。 |
CONTROL | 控制服务器 |
| ALTER | CONTROL | 更改任意 DATABASE |
| 更改任意 APPLICATION ROLE | ALTER | 控制服务器 |
| 更改任意 ASSEMBLY | ALTER | 控制服务器 |
| 更改任意 ASYMMETRIC KEY | ALTER | 控制服务器 |
| 更改任意 CERTIFICATE | ALTER | 控制服务器 |
| 更改任意 COLUMN ENCRYPTION KEY | ALTER | 控制服务器 |
| 改变任何 COLUMN MASTER KEY 定义 | ALTER | 控制服务器 |
| 更改任意 CONTRACT | ALTER | 控制服务器 |
| 更改任何 DATABASE 审计 | ALTER | 更改任意 SERVER AUDIT |
| 修改任何 DATABASE DDL TRIGGER | ALTER | 控制服务器 |
| 改变任何 DATABASEEVENT NOTIFICATION | ALTER | 更改任意 EVENT NOTIFICATION |
| 改变任何 DATABASEEVENT SESSION 适用于:SQL 数据库。 |
ALTER | 更改任意 EVENT SESSION |
| 更改任意 DATABASE SCOPED CONFIGURATION 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。 |
CONTROL | 控制服务器 |
| 更改任何数据空间 | ALTER | 控制服务器 |
| 更改任意 EXTERNAL DATA SOURCE | ALTER | 控制服务器 |
| 更改任意 EXTERNAL FILE FORMAT | ALTER | 控制服务器 |
| 更改任意 EXTERNAL LIBRARY 适用于: SQL Server 2017 (14.x)。 |
CONTROL | 控制服务器 |
| 更改任意 FULLTEXT CATALOG | ALTER | 控制服务器 |
| 更改任意掩码 | CONTROL | 控制服务器 |
| 更改任意 MESSAGE TYPE | ALTER | 控制服务器 |
| 更改任意 REMOTE SERVICE BINDING | ALTER | 控制服务器 |
| 更改任意 ROLE | ALTER | 控制服务器 |
| 更改任意 ROUTE | ALTER | 控制服务器 |
| 更改任意 SCHEMA | ALTER | 控制服务器 |
| 更改任意 SECURITY POLICY 适用于: Azure SQL 数据库。 |
CONTROL | 控制服务器 |
| 更改任意 SENSITIVITY CLASSIFICATION 适用于:SQL Server(SQL Server 2019 及更高版本)、Azure SQL 数据库。 |
CONTROL | 控制服务器 |
| 更改任意 SERVICE | ALTER | 控制服务器 |
| 更改任意 SYMMETRIC KEY | ALTER | 控制服务器 |
| 更改任意 USER | ALTER | 控制服务器 |
| AUTHENTICATE | CONTROL | 身份验证服务器 |
| BACKUP DATABASE | CONTROL | 控制服务器 |
| BACKUP 日志 | CONTROL | 控制服务器 |
| CHECKPOINT | CONTROL | 控制服务器 |
| CONNECT | 连接复制 | 控制服务器 |
| 连接复制 | CONTROL | 控制服务器 |
| CONTROL | CONTROL | 控制服务器 |
| CREATE AGGREGATE | ALTER | 控制服务器 |
| 创造任何一个 EXTERNAL LIBRARY 适用于: SQL Server 2017 (14.x)。 |
CONTROL | 控制服务器 |
| CREATE ASSEMBLY | 更改任意 ASSEMBLY | 控制服务器 |
| CREATE ASYMMETRIC KEY | 更改任意 ASYMMETRIC KEY | 控制服务器 |
| CREATE CERTIFICATE | 更改任意 CERTIFICATE | 控制服务器 |
| CREATE CONTRACT | 更改任意 CONTRACT | 控制服务器 |
| CREATE DATABASE | CONTROL | 创造任何一个 DATABASE |
| CREATE DATABASE DDL EVENT NOTIFICATION | 改变任何 DATABASEEVENT NOTIFICATION | 创建DDL EVENT NOTIFICATION |
| CREATE DEFAULT | ALTER | 控制服务器 |
| CREATE FULLTEXT CATALOG | 更改任意 FULLTEXT CATALOG | 控制服务器 |
| CREATE FUNCTION | ALTER | 控制服务器 |
| CREATE MESSAGE TYPE | 更改任意 MESSAGE TYPE | 控制服务器 |
| CREATE PROCEDURE | ALTER | 控制服务器 |
| CREATE QUEUE | ALTER | 控制服务器 |
| CREATE REMOTE SERVICE BINDING | 更改任意 REMOTE SERVICE BINDING | 控制服务器 |
| CREATE ROLE | 更改任意 ROLE | 控制服务器 |
| CREATE ROUTE | 更改任意 ROUTE | 控制服务器 |
| CREATE RULE | ALTER | 控制服务器 |
| CREATE SCHEMA | 更改任意 SCHEMA | 控制服务器 |
| CREATE SERVICE | 更改任意 SERVICE | 控制服务器 |
| CREATE SYMMETRIC KEY | 更改任意 SYMMETRIC KEY | 控制服务器 |
| CREATE SYNONYM | ALTER | 控制服务器 |
| CREATE TABLE | ALTER | 控制服务器 |
| CREATE TYPE | ALTER | 控制服务器 |
| CREATE VIEW | ALTER | 控制服务器 |
| CREATE XML SCHEMA COLLECTION | ALTER | 控制服务器 |
| DELETE | CONTROL | 控制服务器 |
| EXECUTE | CONTROL | 控制服务器 |
| 执行任意外部 ENDPOINT 适用于: Azure SQL 数据库。 |
CONTROL | 控制服务器 |
| 执行任何外部脚本 适用于: SQL Server 2016 (13.x)。 |
CONTROL | 控制服务器 |
| 执行外部脚本 适用范围:SQL Server 2019 (15.x)。 |
执行任何外部脚本 | 控制服务器 |
| INSERT | CONTROL | 控制服务器 |
| 杀戮 DATABASE 连接 适用于: Azure SQL 数据库。 |
CONTROL | 更改任何连接 |
| REFERENCES | CONTROL | 控制服务器 |
| SELECT | CONTROL | 控制服务器 |
| SHOWPLAN | CONTROL | ALTER 追踪 |
| 订阅查询通知 | CONTROL | 控制服务器 |
| 接管所有权 | CONTROL | 控制服务器 |
| UNMASK | CONTROL | 控制服务器 |
| UPDATE | CONTROL | 控制服务器 |
| VIEW 任何 COLUMN ENCRYPTION KEY 定义 | CONTROL | VIEW 任何定义 |
| VIEW 任何 COLUMN MASTER KEY 定义 | CONTROL | VIEW 任何定义 |
|
VIEW
DATABASE 性能状态 适用于:SQL Server 2022 (16.x) 及更高版本。 |
VIEW DATABASE 状态 | VIEW 服务器性能状态 |
|
VIEW
DATABASE 安全状态 适用于:SQL Server 2022 (16.x) 及更高版本。 |
VIEW DATABASE 状态 | VIEW 服务器安全状态 |
| VIEW DATABASE 状态 | CONTROL | VIEW 服务器状态 |
| VIEW 定义 | CONTROL | VIEW 任何定义 |
|
VIEW 性能定义 适用于:SQL Server 2022 (16.x) 及更高版本。 |
VIEW 定义 | VIEW 任何性能定义 |
|
VIEW 安全定义 适用于:SQL Server 2022 (16.x) 及更高版本。 |
VIEW 定义 | VIEW 任何安全定义 |
Permissions
授予人(或用AS选项指定的委托人)必须拥有带有 GRANT OPTION的权限,或者更高权限,暗示该许可被授予。
若要使用 AS 选项,还必须满足以下附加要求:
| 就像 granting_principal | 所需的其他权限 |
|---|---|
| 数据库用户 | 对用户的 IMPERSONATE 权限、db_securityadmin 固定数据库角色的成员身份、db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。 |
| 映射到 Windows 登录名的数据库用户 | 对用户的 IMPERSONATE 权限、db_securityadmin 固定数据库角色的成员身份、db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。 |
| 映射到 Windows 组的数据库用户 | Windows 组的成员身份、db_securityadmin 固定数据库角色的成员身份、db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。 |
| 映射到证书的数据库用户 | db_securityadmin 固定数据库角色的成员身份、db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。 |
| 映射到非对称密钥的数据库用户 | db_securityadmin 固定数据库角色的成员身份、db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。 |
| 未映射到任何服务器主体的数据库用户 | 对用户的 IMPERSONATE 权限、db_securityadmin 固定数据库角色的成员身份、db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。 |
| 数据库角色 | 对角色的 ALTER 权限、db_securityadmin 固定数据库角色的成员身份、db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。 |
| 应用程序角色 | 对角色的 ALTER 权限、db_securityadmin 固定数据库角色的成员身份、db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。 |
对象所有者可以授予对其所拥有的对象的权限。 对某安全对象具有 CONTROL 权限的主体可以授予对该安全对象的权限。
被授予 CONTROL SERVER 权限的用户(例如,sysadmin 固定服务器角色的成员)可以授予对相应服务器中任一个安全对象的任意权限。
Examples
A. 授予创建表的权限
以下示例授予用户 CREATE TABLE 对 AdventureWorks 数据库的 MelanieK 权限。
USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO
B. 对应用程序角色授予 SHOWPLAN 权限
以下示例授予应用程序角色 SHOWPLAN 对 AdventureWorks2025 数据库的 AuditMonitor 权限。
适用于:SQL Server 2008 (10.0.x) 及更高版本、SQL 数据库
USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO
C. 选择CREATE VIEW权授予GRANT
以下示例授予用户 CREATE VIEW 对 AdventureWorks2025 数据库的 CarmineEs 权限以及为其他主体授予 CREATE VIEW 的权限。
USE AdventureWorks2022;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO
D. 将 CONTROL 权限授予数据库用户
以下示例授予数据库用户 CONTROL 对 AdventureWorks2025 数据库的 Sarah 权限。 用户必须存在于数据库中,并且必须将上下文设置为数据库。
USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO