GRANT 伺服器權限 (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

授與伺服器的權限。

Transact-SQL 語法慣例

Syntax

  
GRANT permission [ ,...n ]   
    TO <grantee_principal> [ ,...n ] [ WITH GRANT OPTION ]  
    [ AS <grantor_principal> ]  
  
<grantee_principal> ::= SQL_Server_login   
    | SQL_Server_login_mapped_to_Windows_login  
    | SQL_Server_login_mapped_to_Windows_group  
    | SQL_Server_login_mapped_to_certificate  
    | SQL_Server_login_mapped_to_asymmetric_key  
    | server_role  
  
<grantor_principal> ::= SQL_Server_login   
    | SQL_Server_login_mapped_to_Windows_login  
    | SQL_Server_login_mapped_to_Windows_group  
    | SQL_Server_login_mapped_to_certificate  
    | SQL_Server_login_mapped_to_asymmetric_key  
    | server_role  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

permission
指定可以授與的伺服器權限。 如需權限清單,請參閱這個主題稍後的「備註」一節。

TO <grantee_principal>:指定要對其授與權限的主體。

AS <grantor_principal>:指定主體,以讓執行這項查詢的主體可從該主體衍生授與權限的權利。

WITH GRANT OPTION
指出主體也有權授與指定權限給其他主體。

SQL_Server_login
指定 SQL Server 登入。

SQL_Server_login_mapped_to_Windows_login
指定對應至 Windows 登入的 SQL Server 登入。

SQL_Server_login_mapped_to_Windows_group
指定對應至 Windows 群組的 SQL Server 登入。

SQL_Server_login_mapped_to_certificate
指定對應至憑證的 SQL Server 登入。

SQL_Server_login_mapped_to_asymmetric_key
指定對應至非對稱金鑰的 SQL Server 登入。

server_role
指定使用者定義伺服器角色。

備註

只有在目前資料庫是 master 的情況下,才能夠授與伺服器範圍的權限。

您可以在 sys.server_permissions 目錄檢視中檢視伺服器權限的資訊,而在 sys.server_principals 目錄檢視中檢視伺服器主體的資訊。 您可以在 sys.server_role_members 目錄檢視中檢視伺服器角色成員資格的資訊。

伺服器是最高層級的權限階層。 下表所列的是可以授與之最特定且最有限的伺服器權限。

伺服器權限 伺服器權限所隱含
ADMINISTER BULK OPERATIONS CONTROL SERVER
ALTER ANY AVAILABILITY GROUP

適用於:SQL Server (SQL Server 2012 (11.x) 到最新版本)。
CONTROL SERVER
ALTER ANY CONNECTION CONTROL SERVER
ALTER ANY CREDENTIAL CONTROL SERVER
ALTER ANY DATABASE CONTROL SERVER
ALTER ANY ENDPOINT CONTROL SERVER
ALTER ANY EVENT NOTIFICATION CONTROL SERVER
ALTER ANY EVENT SESSION CONTROL SERVER
ALTER ANY LINKED SERVER CONTROL SERVER
ALTER ANY LOGIN CONTROL SERVER
ALTER ANY SERVER AUDIT CONTROL SERVER
ALTER ANY SERVER ROLE

適用於:SQL Server (SQL Server 2012 (11.x) 到最新版本)。
CONTROL SERVER
ALTER RESOURCES CONTROL SERVER
ALTER SERVER STATE CONTROL SERVER
ALTER SETTINGS CONTROL SERVER
ALTER TRACE CONTROL SERVER
AUTHENTICATE SERVER CONTROL SERVER
CONNECT ANY DATABASE

適用於:SQL Server (SQL Server 2014 (12.x) 到最新版本)。
CONTROL SERVER
CONNECT SQL CONTROL SERVER
CONTROL SERVER CONTROL SERVER
CREATE ANY DATABASE ALTER ANY DATABASE
CREATE AVAILABILITY GROUP

適用於:SQL Server (SQL Server 2012 (11.x) 到最新版本)。
ALTER ANY AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
CREATE ENDPOINT ALTER ANY ENDPOINT
CREATE LOGIN

適用於:SQL Server 2022 (16.x) 和更新版本。
ALTER ANY LOGIN
CREATE SERVER ROLE

適用於:SQL Server (SQL Server 2012 (11.x) 到最新版本)。
ALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY CONTROL SERVER
IMPERSONATE ANY LOGIN

適用於:SQL Server (SQL Server 2014 (12.x) 到最新版本)。
CONTROL SERVER
SELECT ALL USER SECURABLES

適用於:SQL Server (SQL Server 2014 (12.x) 到最新版本)。
CONTROL SERVER
SHUTDOWN CONTROL SERVER
UNSAFE ASSEMBLY CONTROL SERVER
VIEW ANY DATABASE VIEW ANY DEFINITION
VIEW ANY DEFINITION CONTROL SERVER
VIEW SERVER STATE ALTER SERVER STATE

SQL Server 2014 (12.x) 中已新增下列三個伺服器權限。

CONNECT ANY DATABASE 權限
CONNECT ANY DATABASE 授與登入,該登入必須連線到目前存在的所有資料庫,以及可能於日後建立的任何新資料庫。 不要在任何資料庫中授與超出連接的任何權限。 與 SELECT ALL USER SECURABLESVIEW SERVER STATE 結合,讓稽核程序檢視 SQL Server 執行個體的所有資料或所有資料庫狀態。

IMPERSONATE ANY LOGIN 權限
授與此權限時,可讓中間層程序在連接到資料庫時模擬連接的用戶端帳戶。 拒絕此權限時,高權限登入可能遭到封鎖,而無法模擬其他登入。 例如,具有 CONTROL SERVER 權限的登入可能遭到封鎖,而無法模擬其他登入。

SELECT ALL USER SECURABLES 權限
授與時,登入可以檢視來自所有結構描述層級物件 (例如資料表、檢視和資料表值函數) 的資料。這些物件位於可用來建立使用者物件之使用者可寫入的結構描述 (sys 和 INFORMATION_SCHEMA 以外的任何結構描述) 中。 此權限會在使用者可以連線的所有資料庫中生效。 拒絕時,除非物件在 sys 或 INFORMATION_SCHEMA 結構描述中,否則會防止存取所有物件。 這也會影響所涵蓋物件的中繼資料可見度,另請參閱:中繼資料可見度組態

權限

同意授權者 (或是指定了 AS 選項的主體) 必須具有指定了 GRANT OPTION 的權限本身,或是具有隱含目前正在授與權限的更高權限。 系統管理員 (sysadmin) 固定伺服器角色的成員也能夠授與任何權限。

範例

A. 授與權限給登入

下列範例會將 CONTROL SERVER 權限授與 SQL Server 登入 TerryEminhizer

USE master;  
GRANT CONTROL SERVER TO TerryEminhizer;  
GO  

B. 授與具有 GRANT 權限的權限

下列範例會將 ALTER ANY EVENT NOTIFICATION 授與 SQL Server 登入 JanethEsteves,而此登入有權將該權限授與其他登入。

USE master;  
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;  
GO  

C. 授與權限給伺服器角色

下列範例會建立名為 ITDevelopers 的伺服器角色, 並將 ALTER ANY DATABASE 權限授與 ITDevelopers 伺服器角色。

USE master;  
CREATE SERVER ROLE ITDevelopers ;  
GRANT ALTER ANY DATABASE TO ITDevelopers ;  
GO  

另請參閱

GRANT (Transact-SQL)
DENY (Transact-SQL)
DENY 伺服器權限 (Transact-SQL)
REVOKE 伺服器權限 (Transact-SQL)
權限階層 (Database Engine)
主體 (資料庫引擎)
權限 (資料庫引擎)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)