REVOKE 伺服器權限 (Transact-SQL)

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

移除伺服器層級 GRANT 和 DENY 權限。

Transact-SQL 語法慣例

Syntax

REVOKE [ GRANT OPTION FOR ] permission  [ ,...n ]   
    { TO | FROM } <grantee_principal> [ ,...n ]  
        [ CASCADE ]  
    [ 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 | FROM } <grantee_principal> 指定要撤銷其權限的主體。

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

GRANT OPTION FOR
指出會撤銷對其他主體授與指定權限的權限。 不會撤銷權限本身。

重要

如果主體有不含 GRANT 選項的指定權限,則會撤銷權限本身。

CASCADE
指出目前正在撤銷的權限,而這個權限也會被這個主體所授與或拒絕的其他主體所撤銷。

警告

獲得授與 WITH GRANT OPTION 之權限的串聯撤銷,會同時撤銷該權限的 GRANT 和 DENY。

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 的情況下,才能夠撤銷伺服器範圍的權限。

REVOKE 會同時移除 GRANT 和 DENY 權限。

您可以利用 REVOKE GRANT OPTION FOR 撤銷重新授與指定權限的權限。 如果主體有授與該權限的權限,則會撤銷授與該權限的權限,且不會撤銷該權限本身。 但是,如果主體有不含 GRANT 選項的指定權限,則會撤銷權限本身。

您可以在 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 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

權限

需要 CONTROL SERVER 權限或系統管理員 (sysadmin) 固定伺服器角色中的成員資格。

範例

A. 從登入撤銷權限

下列範例會從 SQL Server 登入 WanidaBenshoof 撤銷 VIEW SERVER STATE 權限。

USE master;  
REVOKE VIEW SERVER STATE FROM WanidaBenshoof;  
GO  

B. 撤銷 WITH GRANT 選項

下列範例會撤銷從 SQL Server 登入 JanethEsteves 授與 CONNECT SQL 權限的權利。

USE master;  
REVOKE GRANT OPTION FOR CONNECT SQL FROM JanethEsteves;  
GO  

該登入仍有 CONNECT SQL 權限,但它無法再對其他主體授與該權限。

另請參閱

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)