適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
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 DATABASE、BACKUP LOG、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE 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 權限。
資料庫是由伺服器所包含的安全性實體,而該伺服器是其權限階層中的父系。 下表所列的是可以授與之最特定和最有限的資料庫權限,並列出利用隱含方式來併入這些權限的較通用權限。
| 資料庫權限 | 資料庫權限所隱含 | 伺服器權限所隱含 |
|---|---|---|
| 管理資料庫批量操作 適用於:SQL Database。 |
CONTROL | 控制伺服器 |
| ALTER | CONTROL | 變更任何資料庫 |
| 更改任何應用程式角色 | ALTER | 控制伺服器 |
| 變更任何組件 | ALTER | 控制伺服器 |
| 更改任何非對稱密鑰 | ALTER | 控制伺服器 |
| 變更任何證書 | ALTER | 控制伺服器 |
| 更改任何列加密金鑰 | ALTER | 控制伺服器 |
| 更改任何欄位主鍵定義 | ALTER | 控制伺服器 |
| 修改任何合約 | ALTER | 控制伺服器 |
| 更改任何資料庫稽核 | ALTER | 更改任何伺服器審計 |
| 更改任何資料庫 DDL 觸發器 | ALTER | 控制伺服器 |
| 變更任何資料庫事件通知 | ALTER | 更改任何事件通知 |
| 修改任何資料庫事件會話 適用於:SQL Database。 |
ALTER | 更改任何事件會話 |
| 更改任何資料庫範圍的配置 適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。 |
CONTROL | 控制伺服器 |
| 修改任何資料空間 | ALTER | 控制伺服器 |
| 更改任何外部資料來源 | ALTER | 控制伺服器 |
| 修改任何外部檔案格式 | ALTER | 控制伺服器 |
| 更改任何外部函式庫 適用於:SQL Server 2017 (14.x)。 |
CONTROL | 控制伺服器 |
| ALTER ANY 全文目錄 | ALTER | 控制伺服器 |
| 更改任何遮罩 | CONTROL | 控制伺服器 |
| 更改任何訊息類型 | ALTER | 控制伺服器 |
| 更改任何遠端服務綁定 | ALTER | 控制伺服器 |
| 變更任何角色 | ALTER | 控制伺服器 |
| 變更任何路由 | ALTER | 控制伺服器 |
| 更改任何架構 | ALTER | 控制伺服器 |
| 更改任何安全策略 適用於:Azure SQL Database。 |
CONTROL | 控制伺服器 |
| 改變任何敏感度分類 適用於:SQL Server (SQL Server 2019 和更新版本)、Azure SQL Database。 |
CONTROL | 控制伺服器 |
| 變更任何服務 | ALTER | 控制伺服器 |
| 變更任意對稱金鑰 | ALTER | 控制伺服器 |
| 修改任何使用者 | ALTER | 控制伺服器 |
| AUTHENTICATE | CONTROL | 認證伺服器 |
| 備份資料庫 | CONTROL | 控制伺服器 |
| 備份日誌 | CONTROL | 控制伺服器 |
| CHECKPOINT | CONTROL | 控制伺服器 |
| CONNECT | 連接複本 | 控制伺服器 |
| 連接複本 | CONTROL | 控制伺服器 |
| CONTROL | CONTROL | 控制伺服器 |
| 創建聚合 | ALTER | 控制伺服器 |
| 建立任何外部連結庫 適用於:SQL Server 2017 (14.x)。 |
CONTROL | 控制伺服器 |
| CREATE ASSEMBLY(建立組件) | 變更任何組件 | 控制伺服器 |
| 建立非對稱金鑰 | 更改任何非對稱密鑰 | 控制伺服器 |
| 創建證書 | 變更任何證書 | 控制伺服器 |
| 建立合約 | 修改任何合約 | 控制伺服器 |
| 建立資料庫 | CONTROL | 建立任何資料庫 |
| 建立資料庫 DDL 事件通知 | 變更任何資料庫事件通知 | 建立 DDL 事件通知 |
| 建立預設值 | ALTER | 控制伺服器 |
| 建立全文目錄 | ALTER ANY 全文目錄 | 控制伺服器 |
| 建立函數 | ALTER | 控制伺服器 |
| 建立消息類型 | 更改任何訊息類型 | 控制伺服器 |
| 建立程序 | ALTER | 控制伺服器 |
| 建立佇列 | ALTER | 控制伺服器 |
| 建立遠端服務系結 | 更改任何遠端服務綁定 | 控制伺服器 |
| 創建角色 | 變更任何角色 | 控制伺服器 |
| 建立路由 | 變更任何路由 | 控制伺服器 |
| 建立規則 | ALTER | 控制伺服器 |
| 建立結構描述 | 更改任何架構 | 控制伺服器 |
| 建立服務 | 變更任何服務 | 控制伺服器 |
| 建立對稱金鑰 | 變更任意對稱金鑰 | 控制伺服器 |
| CREATE 同義字 | ALTER | 控制伺服器 |
| CREATE TABLE | ALTER | 控制伺服器 |
| 建立類型 (CREATE TYPE) | ALTER | 控制伺服器 |
| 建立視圖 | ALTER | 控制伺服器 |
| 建立 XML 架構集合 | ALTER | 控制伺服器 |
| DELETE | CONTROL | 控制伺服器 |
| EXECUTE | CONTROL | 控制伺服器 |
| 執行任何外部端點 適用於:Azure SQL Database。 |
CONTROL | 控制伺服器 |
| 執行任何外部腳本 適用於:SQL Server 2016 (13.x)。 |
CONTROL | 控制伺服器 |
| 執行外部腳本 適用於:SQL Server 2019 (15.x)。 |
執行任何外部腳本 | 控制伺服器 |
| INSERT | CONTROL | 控制伺服器 |
| 終止資料庫連線 適用於:Azure SQL Database。 |
CONTROL | 變更任何連線 |
| REFERENCES | CONTROL | 控制伺服器 |
| SELECT | CONTROL | 控制伺服器 |
| SHOWPLAN | CONTROL | ALTER 追蹤 |
| 訂閱查詢通知 | CONTROL | 控制伺服器 |
| 掌握所有權 | CONTROL | 控制伺服器 |
| UNMASK | CONTROL | 控制伺服器 |
| UPDATE | CONTROL | 控制伺服器 |
| 檢視任何數據行加密金鑰定義 | CONTROL | 查看任何定義 |
| 檢視任何資料行主要金鑰定義 | CONTROL | 查看任何定義 |
| 檢視資料庫狀態 | CONTROL | 查看伺服器狀態 |
| 檢視定義 | CONTROL | 查看任何定義 |
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. 授與含有 GRANT OPTION 的 CREATE VIEW
下列範例會將 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