共用方式為


GRANT 資料庫權限 (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

授與 SQL Server 中資料庫的權限。

Transact-SQL 語法慣例

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

另請參閱