相关文章推荐
重情义的西红柿  ·  _(通配符 - ...·  1 周前    · 
帅气的烤土司  ·  SET ARITHABORT ...·  1 周前    · 
要出家的煎饼果子  ·  CREATE INDEX ...·  1 周前    · 
咆哮的抽屉  ·  new Date() ...·  1 年前    · 
跑龙套的沙滩裤  ·  wpf - Exception ...·  1 年前    · 

適用于: SQL Server Azure SQL Database Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 倉儲 中的 SQL 端點

對主體拒絕權限。 防止主體透過其群組或角色成員資格繼承權限。 DENY 的優先順序高於所有權限,不同之處在於 DENY 不適用至物件擁有者或 sysadmin 固定伺服器角色的成員。 安全性注意事項 :系統無法拒絕 sysadmin 固定伺服器角色和物件擁有者的權限。

Transact-SQL 語法慣例

Syntax

-- Syntax for SQL Server and Azure SQL Database  
-- Simplified syntax for DENY  
DENY   { ALL [ PRIVILEGES ] } 
     | <permission>  [ ( column [ ,...n ] ) ] [ ,...n ]  
    [ ON [ <class> :: ] securable ] 
    TO principal [ ,...n ]   
    [ CASCADE] [ AS principal ]  
<permission> ::=  
{ see the tables below }  
<class> ::=  
{ see the tables below }  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
    <permission> [ ,...n ]  
    [ ON [ <class_> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
<permission> ::=  
{ see the tables below }  
<class> ::=  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

這個選項不會拒絕所有可能的權限。 拒絕 ALL 等同於拒絕下列權限。

  • 如果安全性實體是資料庫,ALL 表示 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE VIEW。

  • 如果安全性實體是純量函數,ALL 表示 EXECUTE 和 REFERENCES。

  • 如果安全性實體是資料表值函式,ALL 表示 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。

  • 如果安全性實體是預存程序,ALL 表示 EXECUTE。

  • 如果安全性實體是資料表,ALL 表示 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。

  • 如果安全性實體是檢視表,ALL 表示 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。

    DENY ALL 語法已被取代。 未來的 Microsoft SQL Server 版本將移除這項功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 改為拒絕特定的權限。

    PRIVILEGES
    為符合 ISO 而包含這個項目。 不會變更 ALL 的行為。

    permission
    這是權限的名稱。 權限對安全性實體的有效對應描述於下列子主題中。

    column
    指定正在拒絕權限的資料表中資料行的名稱。 它必須用括號 () 括住。

    class
    指定正在拒絕權限之安全性實體的類別。 範圍限定詞 :: 為必要項目。

    securable
    指定正在拒絕權限的安全性實體。

    TO principal
    這是主體的名稱。 可以被拒絕安全性實體權限的主體,隨著安全性實體而不同。 如需有效的組合,請參閱下列安全性實體特定主題。

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

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

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

    DENY 陳述式的完整語法相當複雜。 上方的語法圖已簡化,以強調其結構。 拒絕特定安全性實體權限的完整語法描述於下列主題中。

    如果針對被授與指定 GRANT OPTION 之權限的主體拒絕權限時,並沒有指定 CASCADE,DENY 便會失敗。

    sp_helprotect 系統預存程序會報告資料庫層級安全性實體的權限。

    在 Microsoft Fabric 中,CREATE USER 目前無法明確執行。 執行 GRANT 或 DENY 時,會自動建立使用者。

    資料表層級的 DENY 不會優先於資料行層級的 GRANT。 保留權限階層中這項不一致的目的,是為了與舊版相容。 未來的版本將予以移除。

    拒絕資料庫的 CONTROL 權限隱含著拒絕資料庫的 CONNECT 權限。 被拒絕資料庫 CONTROL 權限的主體將無法連接至該資料庫。

    拒絕 CONTROL SERVER 權限隱含著拒絕伺服器的 CONNECT SQL 權限。 被拒絕伺服器 CONTROL SERVER 權限的主體將無法連接至該伺服器。

    呼叫端 (或指定了 AS 選項的主體) 必須具有安全性實體的 CONTROL 權限,或是具有隱含安全性實體 CONTROL 權限的更高權限。 如果使用 AS 選項,指定的主體必須擁有要拒絕其權限的類型。

    CONTROL SERVER 權限的被授與者 (例如系統管理員 (sysadmin) 固定伺服器角色的成員),可以拒絕伺服器中任何安全性實體的任何權限。 資料庫之 CONTROL 權限的被授與者 (例如 db_owner 固定資料庫角色的成員),可以拒絕資料庫中任何安全性實體的任何權限。 結構描述之 CONTROL 權限的被授與者,可以拒絕結構描述中任何物件的任何權限。 如果使用 AS 子句,指定的主體必須擁有要拒絕其權限的類型。

    下表列出安全性實體和描述安全性實體特定語法的主題。

    安全性實體
  •