GRANT 伺服器權限 (Transact-SQL)

授與伺服器的權限。

適用於:SQL Server (SQL Server 2008 至目前版本)。

主題連結圖示 Transact-SQL 語法慣例

語法

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

引數

  • 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 至目前版本)。

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 至目前版本)。

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 至目前版本)。

CONTROL SERVER

CONNECT SQL

CONTROL SERVER

CONTROL SERVER

CONTROL SERVER

CREATE ANY DATABASE

ALTER ANY DATABASE

CREATE AVAILABILITY GROUP

適用於:SQL Server (SQL Server 2012 至目前版本)。

ALTER ANY AVAILABILITY GROUP

CREATE DDL EVENT NOTIFICATION

ALTER ANY EVENT NOTIFICATION

CREATE ENDPOINT

ALTER ANY ENDPOINT

CREATE SERVER ROLE

適用於:SQL Server (SQL Server 2012 至目前版本)。

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 至目前版本)。

CONTROL SERVER

SELECT ALL USER SECURABLES

適用於:SQL Server (SQL Server 2014 至目前版本)。

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 中已加入下列三個伺服器權限。

  • CONNECT ANY DATABASE 權限
    將 CONNECT ANY DATABASE 授與必須連接到目前存在之所有資料庫與未來可能建立之新資料庫的登入。 不要在任何資料庫中授與超出連接的任何權限。 與 SELECT ALL USER SECURABLES 或 VIEW SERVER STATE 結合可讓稽核程序檢視 SQL Server 執行個體的所有資料或所有資料庫狀態。

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

  • SELECT ALL USER SECURABLES 權限
    授與此權限時,像是稽核者這類登入就可以檢視使用者可連接之所有資料庫中的資料。 拒絕此權限時,可防止存取不在 sys 結構描述中的物件。

權限

同意授權者 (或是指定了 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.授與權限給伺服器角色

下列範例會建立兩個名稱為 ITDevAdmin 和 ITDevelopers 的伺服器角色。 它會將 ALTER ANY DATABASE 權限授與 ITDevAdmin 使用者定義的伺服器角色,包括 WITH GRANT 選項,讓 ITDevAdmin 伺服器角色可以重新指派 ALTER ANY DATABASE 權限。 此範例接著會授權 ITDevelopers 使用 ITDevAdmin 伺服器角色的 ALTER ANY DATABASE 權限。

USE master;
CREATE SERVER ROLE ITDevAdmin ;
CREATE SERVER ROLE ITDevelopers ;
GRANT ALTER ANY DATABASE TO ITDevAdmin WITH GRANT OPTION ;
GRANT ALTER ANY DATABASE TO ITDevelopers AS ITDevAdmin ;
GO

請參閱

參考

GRANT (Transact-SQL)

DENY (Transact-SQL)

DENY 伺服器權限 (Transact-SQL)

REVOKE 伺服器權限 (Transact-SQL)

sys.fn_builtin_permissions (Transact-SQL)

sys.fn_my_permissions (Transact-SQL)

HAS_PERMS_BY_NAME (Transact-SQL)

概念

權限階層 (Database Engine)

主體 (Database Engine)

權限 (Database Engine)