分享方式:


DENY 伺服器權限 (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體

拒絕伺服器的權限。

Transact-SQL 語法慣例

語法

DENY permission [ ,...n ]   
    TO <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  

引數

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

CASCADE
表示已對指定主體和對被主體授與權限的所有其他主體拒絕權限。 當主體具有 GRANT OPTION 的權限時,這是必要的。

server_principal <>
指定要拒絕其權限的主體。

就像 <grantor_principal>
指定主體,執行這項查詢的主體會從這個主體衍生權限來拒絕權限。 您可使用 AS principal 子句,來表示記錄為權限拒絕者的主體應為陳述式執行人員以外的主體。 例如,假設使用者 Mary 是 principal_id 12;使用者 Raul 是 principal 15。 Mary 執行 DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; 現在,sys.database_permissions數據表會指出拒絕語句的grantor_principal_id為 15 (Raul),即使語句實際上是由使用者 13 (Mary) 執行。

在此陳述式中使用 AS 不代表能模擬其他使用者。

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 目錄檢視中檢視伺服器角色成員資格的資訊。

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

伺服器權限 伺服器權限所隱含
管理批量操作 控制伺服器
變更任何可用性群組

適用於:SQL Server (SQL Server 2012 (11.x) 到最新版本)。
控制伺服器
變更任何連線 控制伺服器
更改任何憑證 控制伺服器
變更任何資料庫 控制伺服器
修改任何端點 控制伺服器
更改任何事件通知 控制伺服器
更改任何事件會話 控制伺服器
更改任何連接的伺服器 控制伺服器
變更任意登入 控制伺服器
更改任何伺服器審計 控制伺服器
變更任何伺服器角色

適用於:SQL Server (SQL Server 2012 (11.x) 到最新版本)。
控制伺服器
修改資源 控制伺服器
更改伺服器狀態 控制伺服器
變更設定 控制伺服器
ALTER 追蹤 控制伺服器
認證伺服器 控制伺服器
連接任何資料庫

適用於:SQL Server (SQL Server 2014 (12.x) 到最新版本)。
控制伺服器
連接 SQL 控制伺服器
控制伺服器 控制伺服器
建立任何資料庫 變更任何資料庫
建立可用性群組

適用於:SQL Server (SQL Server 2012 (11.x) 到最新版本)。
變更任何可用性群組
建立 DDL 事件通知 更改任何事件通知
建立端點 修改任何端點
建立伺服器角色

適用於:SQL Server (SQL Server 2012 (11.x) 到最新版本)。
變更任何伺服器角色
建立追蹤事件通知 更改任何事件通知
外部存取組件 控制伺服器
冒充任何登入

適用於:SQL Server (SQL Server 2014 (12.x) 到最新版本)。
控制伺服器
選取所有使用者安全性物件

適用於:SQL Server (SQL Server 2014 (12.x) 到最新版本)。
控制伺服器
SHUTDOWN 控制伺服器
不安全集會 控制伺服器
查看任何資料庫 查看任何定義
查看任何定義 控制伺服器
查看伺服器狀態 更改伺服器狀態

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 結構描述中的物件。

權限

需要安全性實體的 CONTROL SERVER 權限或擁有權。 如果使用 AS 子句,指定的主體必須擁有要拒絕其權限的安全性實體。

範例

A. 對 SQL Server 登入及已對其授與權限的主體,拒絕 CONNECT SQL 權限

下列範例會對 SQL Server 登入 CONNECT SQL 和已由她授與權限的主體拒絕 Annika 權限。

USE master;  
DENY CONNECT SQL TO Annika CASCADE;  
GO  

B. 使用 AS 選項,對 SQL Server 登入拒絕 CREATE ENDPOINT 權限

下列範例會對使用者 CREATE ENDPOINT 拒絕 ArifS 權限。 這個範例利用 AS 選項來指定 MandarP 作為負責執行的主體從其衍生權限,以執行這項指定作業的主體。

USE master;  
DENY CREATE ENDPOINT TO ArifS AS MandarP;  
GO  

另請參閱

格蘭特 (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)