GRANT 伺服器權限 (Transact-SQL)
適用於:SQL Server Azure 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 (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 SECURABLES 或 VIEW 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)