DENY 伺服器主體權限 (Transact-SQL)

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

拒絕授與的 SQL Server 登入權限。

Transact-SQL 語法慣例

Syntax

DENY permission [ ,...n ] }   
    ON   
    { [ LOGIN :: SQL_Server_login ]  
      | [ SERVER ROLE :: server_role ] }   
    TO <server_principal> [ ,...n ]  
    [ CASCADE ]  
    [ AS SQL_Server_login ]   
  
<server_principal> ::=   
    SQL_Server_login  
    | SQL_Server_login_from_Windows_login   
    | SQL_Server_login_from_certificate   
    | SQL_Server_login_from_AsymKey   
    | server_role  

注意

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

引數

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

LOGIN ::SQL_Server_login
指定要拒絕其權限的 SQL Server 登入。 範圍限定詞 ( :: ) 是必要項。

SERVER ROLE ::server_role
指定要拒絕其權限的伺服器角色。 範圍限定詞 ( :: ) 是必要項。

TO <伺服器主體>
指定要授與其權限的 SQL Server 登入或伺服器角色。

TO SQL_Server_login
指定要拒絕其權限的 SQL Server 登入。

SQL_Server_login
指定 SQL Server 登入的名稱。

SQL_Server_login_from_Windows_login
指定從 Windows 登入建立的 SQL Server 登入名稱。

SQL_Server_login_from_certificate
指定對應至憑證的 SQL Server 登入名稱。

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

server_role
指定伺服器角色的名稱。

CASCADE
指出目前受到拒絕的權限,也為這個主體曾授與此權限的其他主體所拒絕。

AS SQL_Server_login
指定 SQL Server 登入,執行這項查詢的主體會從這項登入衍生其權限來拒絕權限。

備註

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

有關伺服器權限的資訊可在 sys.server_permissions 目錄檢視中取得。 有關伺服器主體的資訊可在 sys.server_principals 目錄檢視中取得。

當您拒絕主體的權限 (而其已透過 GRANT OPTION 獲授與該權限) 時,若未指定 CASCADE,DENY 陳述式會失敗。

SQL Server 登入和伺服器角色是伺服器層級安全性實體。 下表列出可以拒絕的最明確和最有限 SQL Server 登入或伺服器角色權限,並列出利用隱含方式來併入這些權限的較通用權限。

SQL Server 登入或伺服器角色權限 SQL Server 登入或伺服器角色權限所隱含 伺服器權限所隱含
CONTROL CONTROL CONTROL SERVER
IMPERSONATE CONTROL CONTROL SERVER
VIEW DEFINITION CONTROL VIEW ANY DEFINITION
ALTER CONTROL ALTER ANY LOGIN

ALTER ANY SERVER ROLE

權限

對於登入,需要登入的 CONTROL 權限或伺服器的 ALTER ANY LOGIN 權限。

對於伺服器角色,需要伺服器角色的 CONTROL 權限或伺服器的 ALTER ANY SERVER ROLE 權限。

範例

A. 拒絕登入的 IMPERSONATE 權限

針對透過 Windows 使用者 AdvWorks\YoonM 所建立的 SQL Server 登入 WanidaBenshoof,下列範例會拒絕該 SQL Server 登入的 IMPERSONATE 權限。

USE master;  
DENY IMPERSONATE ON LOGIN::WanidaBenshoof TO [AdvWorks\YoonM];  
GO  

B. 拒絕具有 CASCADE 的 VIEW DEFINITION 權限

下列範例拒絕 SQL Server 登入 RMeyyappan 對 SQL Server 登入 EricKurjanVIEW DEFINITION 權限。 CASCADE 選項指出也會對 VIEW DEFINITION 對其授與這個權限的主體,拒絕 EricKurjanRMeyyappan 權限。

USE master;  
DENY VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan   
    CASCADE;  
GO   

C. 拒絕伺服器角色的 VIEW DEFINITION 權限

下列範例會對 VIEW DEFINITION 伺服器角色拒絕 Sales 伺服器角色的 Auditors 權限。

USE master;  
DENY VIEW DEFINITION ON SERVER ROLE::Sales TO Auditors ;  
GO   

另請參閱

sys.server_principals (Transact-SQL)
sys.server_permissions (Transact-SQL)
GRANT 伺服器主體權限 (Transact-SQL)
REVOKE 伺服器主體權限 (Transact-SQL)
CREATE LOGIN (Transact-SQL)
主體 (資料庫引擎)
權限 (資料庫引擎)
安全性函數 (Transact-SQL)
安全性預存程序 (Transact-SQL)