適用於:SQL Server
Azure SQL Database
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 等同於授予以下權限:BACKUP、LOG、DATABASE、 BACKUPCREATE DEFAULTCREATE FUNCTIONCREATE PROCEDURECREATE RULE。 CREATE 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
指定應用程式角色。
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 Database。 |
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 Database。 |
ALTER | 更改任何 EVENT SESSION |
| 更改任何 DATABASE SCOPED CONFIGURATION 適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。 |
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 Database。 |
CONTROL | 控制伺服器 |
| 更改任何 SENSITIVITY CLASSIFICATION 適用於:SQL Server (SQL Server 2019 和更新版本)、Azure SQL Database。 |
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 Database。 |
CONTROL | 控制伺服器 |
| 執行任何外部腳本 適用於:SQL Server 2016 (13.x)。 |
CONTROL | 控制伺服器 |
| 執行外部腳本 適用於:SQL Server 2019 (15.x)。 |
執行任何外部腳本 | 控制伺服器 |
| INSERT | CONTROL | 控制伺服器 |
| 殺戮 DATABASE 連結 適用於:Azure SQL Database。 |
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 Database
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