Share via


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

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

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

語法

DENY permission [ ,...n ] } 
    ON LOGIN :: SQL_Server_login
    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   

引數

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

  • LOGIN :: SQL_Server_login
    指定要拒絕其權限的 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 登入名稱。

  • 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

權限

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

範例

A. 拒絕登入的 IMPERSONATE 權限

下列範例會對 SQL Server 登入拒絕 SQL Server 登入 WanidaBenshoof 的 IMPERSONATE 權限,而這項登入是從 Windows 使用 AdvWorks\YoonM 所建立。

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

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

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

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