適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
ストアド プロシージャ、拡張ストアド プロシージャ、関数、ビューなどのシステム オブジェクトに対する権限を拒否します。
Syntax
DENY { SELECT | EXECUTE } ON [ sys. ] system_object TO principal
Arguments
[ システム。 ]
sys修飾子は、カタログ ビューと動的管理ビューを参照している場合にのみ必要です。
system_object
権限を拒否するオブジェクトを指定します。
principal
権限を取り消すプリンシパルを指定します。
Remarks
このステートメントを使用すると、SQL Server によってインストールされる特定のストアド プロシージャ、拡張ストアド プロシージャ、テーブル値関数、スカラー関数、ビュー、カタログ ビュー、互換性ビュー、 INFORMATION_SCHEMA ビュー、動的管理ビュー、システム テーブルに対するアクセス許可を拒否できます。 これらの各システム オブジェクトは、リソース データベース (mssqlsystemresource) に一意のレコードとして存在します。 リソース データベースは読み取り専用です。 オブジェクトへのリンクは、すべてのデータベースの sys スキーマのレコードとして公開されます。
既定の名前解決では、修飾子のないプロシージャ名はリソース データベースとして解釈されます。 したがって、 sys 修飾子は、カタログ ビューと動的管理ビューを指定する場合にのみ必要です。
Caution
システム オブジェクトに対するアクセス許可を拒否すると、それらに依存するアプリケーションが失敗します。 SQL Server Management Studio はカタログ ビューを使用し、カタログ ビューの既定のアクセス許可を変更した場合、期待どおりに機能しない可能性があります。
トリガーとシステム オブジェクトの列に対するアクセス許可の拒否はサポートされていません。
システム オブジェクトに対するアクセス許可は、SQL Server のアップグレード中に保持されます。
システム オブジェクトは、 sys.system_objects カタログ ビューで確認できます。 システム オブジェクトに対する権限は、 データベースの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
次の例では、EXECUTExp_cmdshellに対するアクセス許可を拒否します。
DENY EXECUTE ON sys.xp_cmdshell TO PUBLIC;
GO