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