共用方式為


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

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

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

Transact-SQL 語法慣例

Syntax

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

Arguments

[ 系統。 ]

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

system_object

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

principal

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

Remarks

此語句可用來拒絕特定預存程式、擴充預存程式、數據表值函式、純量函式、檢視、目錄檢視、相容性檢視、 INFORMATION_SCHEMA 檢視、檢視、檢視、檢視、動態管理檢視,以及 SQL Server 所安裝之系統數據表的許可權。 這些系統物件都以資源資料庫中的唯一記錄的形式存在(mssqlsystemresource)。 資源資料庫是唯讀的。 對象的連結會公開為每個資料庫的架構中的 sys 記錄。

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

Caution

拒絕系統對象的許可權會導致相依於這些物件的應用程式失敗。 如果您變更目錄檢視的默認許可權,SQL Server Management Studio 會使用目錄檢視,而且可能無法如預期般運作。

不支援拒絕觸發程式和系統對象數據行的許可權。

SQL Server 升級期間會保留系統對象的許可權。

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

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

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

Permissions

需要 CONTROL SERVER 權限。

Examples

下列範例會EXECUTE拒絕xp_cmdshell的許可權

DENY EXECUTE ON sys.xp_cmdshell TO PUBLIC;
GO