GRANT 資料庫權限 (Transact-SQL)
適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點在 Microsoft Fabric SQL 資料庫中的 Microsoft 網狀架構倉儲中Microsoft網狀架構
授與 SQL Server 中資料庫的權限。
語法
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