DENY 系統物件權限 (Transact-SQL)

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

拒絕系統物件 (如預存程序、擴充預存程序、函數及檢視) 的權限。

Transact-SQL 語法慣例

Syntax

DENY { SELECT | EXECUTE } ON [ sys.]system_object TO principal   

注意

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

引數

[ sys.]
只有在參考目錄檢視和動態管理檢視時,才需要 sys 限定詞。

system_object
指定要拒絕其權限的物件。

principal
指定要撤銷其權限的主體。

備註

這個陳述式可用來拒絕下列項目的權限:某些預存程序、擴充預存程序、資料表值函式、純量函數、檢視、目錄檢視、相容性檢視、INFORMATION_SCHEMA 檢視、動態管理檢視,以及 SQL Server 安裝的系統資料表。 在資源資料庫 (mssqlsystemresource) 中,每一個系統物件都會以唯一記錄的形式存在。 資源資料庫是唯讀的。 該物件的連結會公開為每個資料庫 sys 結構描述中的記錄。

預設名稱解析會對資源資料庫解析不合格的程序名稱。 因此,只有在指定目錄檢視和動態管理檢視時,才需要 sys 限定詞。

警告

拒絕系統物件的權限,會導致相依於這些系統物件的應用程式失敗。 SQL Server Management Studio 會使用目錄檢視,但如果您變更了目錄檢視的預設權限,就可能無法按照預期的方式運作。

不支援拒絕觸發程序的權限及拒絕系統物件之資料行的權限。

SQL Server 升級期間會保留系統物件的權限。

您可以在 sys.system_objects 目錄檢視中看到系統物件。 您可以在 master 資料庫的 sys.database_permissions 目錄檢視中,看到系統物件的權限。

下列查詢會傳回系統物件權限的相關資訊:

SELECT * FROM master.sys.database_permissions AS dp   
    JOIN sys.system_objects AS so  
    ON dp.major_id = so.object_id  
    WHERE dp.class = 1 AND so.parent_object_id = 0 ;  
GO  

權限

需要 CONTROL SERVER 權限。

範例

下列範例會對 EXECUTE 拒絕 xp_cmdshellpublic 權限。

DENY EXECUTE ON sys.xp_cmdshell TO public;  
GO  

另請參閱

Transact-SQL 語法慣例
sys.database_permissions (Transact-SQL)
GRANT 系統物件權限 (Transact-SQL)
REVOKE 系統物件權限 (Transact-SQL)