共用方式為


GRANT 資料庫權限 (Transact-SQL)

適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點在 Microsoft Fabric SQL 資料庫中的 Microsoft狀架構倉儲中Microsoft網狀架構

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

Transact-SQL 語法慣例

語法


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

引數

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 指定不含對應伺服器層級主體的資料庫使用者。

備註

重要

在某些情況下,ALTER 與 REFERENCE 權限的結合可允許被授與者檢視資料或執行未經授權的函數。 例如:擁有資料表 ALTER 權限和函式 REFERENCE 權限的使用者,可以透過函式建立並執行計算資料行。 在此情況下,使用者也必須擁有計算資料行的 SELECT 權限。

資料庫是由伺服器所包含的安全性實體,而該伺服器是其權限階層中的父系。 下表所列的是可以授與之最特定和最有限的資料庫權限,並列出利用隱含方式來併入這些權限的較通用權限。

資料庫權限 資料庫權限所隱含 伺服器權限所隱含
ADMINISTER DATABASE BULK OPERATIONS
適用於:SQL Database。
CONTROL CONTROL SERVER
ALTER CONTROL ALTER ANY DATABASE
ALTER ANY APPLICATION ROLE ALTER CONTROL SERVER
ALTER ANY ASSEMBLY ALTER CONTROL SERVER
ALTER ANY ASYMMETRIC KEY ALTER CONTROL SERVER
ALTER ANY CERTIFICATE ALTER CONTROL SERVER
ALTER ANY COLUMN ENCRYPTION KEY ALTER CONTROL SERVER
ALTER ANY COLUMN MASTER KEY DEFINITION ALTER CONTROL SERVER
ALTER ANY CONTRACT ALTER CONTROL SERVER
ALTER ANY DATABASE AUDIT ALTER ALTER ANY SERVER AUDIT
ALTER ANY DATABASE DDL TRIGGER ALTER CONTROL SERVER
ALTER ANY DATABASE EVENT NOTIFICATION ALTER ALTER ANY EVENT NOTIFICATION
ALTER ANY DATABASE EVENT SESSION
適用於:SQL Database。
ALTER ALTER ANY EVENT SESSION
ALTER ANY DATABASE SCOPED CONFIGURATION
適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。
CONTROL CONTROL SERVER
ALTER ANY DATASPACE ALTER CONTROL SERVER
ALTER ANY EXTERNAL DATA SOURCE ALTER CONTROL SERVER
ALTER ANY EXTERNAL FILE FORMAT ALTER CONTROL SERVER
ALTER ANY EXTERNAL LIBRARY
適用於:SQL Server 2017 (14.x)。
CONTROL CONTROL SERVER
ALTER ANY FULLTEXT CATALOG ALTER CONTROL SERVER
ALTER ANY MASK CONTROL CONTROL SERVER
ALTER ANY MESSAGE TYPE ALTER CONTROL SERVER
ALTER ANY REMOTE SERVICE BINDING ALTER CONTROL SERVER
ALTER ANY ROLE ALTER CONTROL SERVER
ALTER ANY ROUTE ALTER CONTROL SERVER
ALTER ANY SCHEMA ALTER CONTROL SERVER
ALTER ANY SECURITY POLICY
適用於:Azure SQL Database。
CONTROL CONTROL SERVER
ALTER ANY SENSITIVITY CLASSIFICATION
適用於:SQL Server (SQL Server 2019 和更新版本)、Azure SQL Database。
CONTROL CONTROL SERVER
ALTER ANY SERVICE ALTER CONTROL SERVER
ALTER ANY SYMMETRIC KEY ALTER CONTROL SERVER
ALTER ANY USER ALTER CONTROL SERVER
AUTHENTICATE CONTROL AUTHENTICATE SERVER
BACKUP DATABASE CONTROL CONTROL SERVER
BACKUP LOG CONTROL CONTROL SERVER
CHECKPOINT CONTROL CONTROL SERVER
CONNECT CONNECT REPLICATION CONTROL SERVER
CONNECT REPLICATION CONTROL CONTROL SERVER
CONTROL CONTROL CONTROL SERVER
CREATE AGGREGATE ALTER CONTROL SERVER
建立任何外部連結庫
適用於:SQL Server 2017 (14.x)。
CONTROL CONTROL SERVER
CREATE ASSEMBLY ALTER ANY ASSEMBLY CONTROL SERVER
CREATE ASYMMETRIC KEY ALTER ANY ASYMMETRIC KEY CONTROL SERVER
CREATE CERTIFICATE ALTER ANY CERTIFICATE CONTROL SERVER
CREATE CONTRACT ALTER ANY CONTRACT CONTROL SERVER
CREATE DATABASE CONTROL CREATE ANY DATABASE
CREATE DATABASE DDL EVENT NOTIFICATION ALTER ANY DATABASE EVENT NOTIFICATION CREATE DDL EVENT NOTIFICATION
CREATE DEFAULT ALTER CONTROL SERVER
CREATE FULLTEXT CATALOG ALTER ANY FULLTEXT CATALOG CONTROL SERVER
CREATE FUNCTION ALTER CONTROL SERVER
CREATE MESSAGE TYPE ALTER ANY MESSAGE TYPE CONTROL SERVER
CREATE PROCEDURE ALTER CONTROL SERVER
CREATE QUEUE ALTER CONTROL SERVER
CREATE REMOTE SERVICE BINDING ALTER ANY REMOTE SERVICE BINDING CONTROL SERVER
CREATE ROLE ALTER ANY ROLE CONTROL SERVER
CREATE ROUTE ALTER ANY ROUTE CONTROL SERVER
CREATE RULE ALTER CONTROL SERVER
CREATE SCHEMA ALTER ANY SCHEMA CONTROL SERVER
CREATE SERVICE ALTER ANY SERVICE CONTROL SERVER
CREATE SYMMETRIC KEY ALTER ANY SYMMETRIC KEY CONTROL SERVER
CREATE SYNONYM ALTER CONTROL SERVER
CREATE TABLE ALTER CONTROL SERVER
CREATE TYPE ALTER CONTROL SERVER
CREATE VIEW ALTER CONTROL SERVER
CREATE XML SCHEMA COLLECTION ALTER CONTROL SERVER
刪除 CONTROL CONTROL SERVER
執行 CREATE 陳述式之前,請先執行 CONTROL CONTROL SERVER
執行任何外部端點
適用於:Azure SQL Database。
CONTROL CONTROL SERVER
執行任何外部腳本
適用於:SQL Server 2016 (13.x)。
CONTROL CONTROL SERVER
EXECUTE EXTERNAL SCRIPT
適用於:SQL Server 2019 (15.x)。
EXECUTE ANY EXTERNAL SCRIPT CONTROL SERVER
Insert CONTROL CONTROL SERVER
KILL DATABASE CONNECTION
適用於:Azure SQL Database。
CONTROL ALTER ANY CONNECTION
REFERENCES CONTROL CONTROL SERVER
SELECT CONTROL CONTROL SERVER
SHOWPLAN CONTROL ALTER TRACE
SUBSCRIBE QUERY NOTIFICATIONS CONTROL CONTROL SERVER
TAKE OWNERSHIP CONTROL CONTROL SERVER
UNMASK CONTROL CONTROL SERVER
UPDATE CONTROL CONTROL SERVER
VIEW ANY COLUMN ENCRYPTION KEY DEFINITION CONTROL VIEW ANY DEFINITION
VIEW ANY COLUMN MASTER KEY DEFINITION CONTROL VIEW ANY DEFINITION
VIEW DATABASE STATE CONTROL VIEW SERVER STATE
VIEW DEFINITION CONTROL VIEW ANY DEFINITION

權限

同意授權者 (或是指定了 AS 選項的主體) 必須具有指定了 GRANT OPTION 的權限本身,或是具有隱含目前正在授與權限的更高權限。

如果是使用 AS 選項,就必須套用下列其他需求。

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) 固定伺服器角色的成員),可以授與伺服器中任何安全性實體的任何權限。

範例

A. 授與建立資料表的權限

下列範例會將 AdventureWorks 資料庫的 CREATE TABLE 權限授與使用者 MelanieK

USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO

B. 授與 SHOWPLAN 權限給應用程式角色

下列範例會將 SHOWPLAN 資料庫的 AdventureWorks2022 權限授與應用程式角色 AuditMonitor

適用於:SQL Server 2008 (10.0.x) 和更新版本、SQL Database

USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO

C. 授與含有 GRANT OPTION 的 CREATE VIEW

下列範例會將 CREATE VIEW 資料庫的 AdventureWorks2022 權限授與具有將 CarmineEs 授與其他主體之權限的使用者 CREATE VIEW

USE AdventureWorks2022;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO

D. 將 CONTROL 權限授與資料庫使用者

下列範例會將 AdventureWorks2022 資料庫的 CONTROL 權限授與資料庫使用者 Sarah。 使用者必須存在於資料庫,且內容必須設定為資料庫。

USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO

另請參閱