DENY (システム オブジェクトの権限の拒否) (Transact-SQL)
ストアド プロシージャ、拡張ストアド プロシージャ、関数、ビューなどのシステム オブジェクトに対する権限を拒否します。
構文
DENY { SELECT | EXECUTE } ON [ sys.]system_object TO principal
引数
[ sys.]
sys 修飾子は、カタログ ビューおよび動的カタログ ビューを指定する場合にのみ必要です。system_object
権限を拒否するオブジェクトを指定します。principal
権限を拒否するプリンシパルを指定します。
説明
このステートメントを使用すると、特定のストアド プロシージャ、拡張ストアド プロシージャ、テーブル値関数、スカラー関数、ビュー、カタログ ビュー、互換ビュー、INFORMATION_SCHEMA ビュー、動的管理ビュー、および SQL Server によってインストールされたシステム テーブルに対する権限を拒否できます。 これらのシステム オブジェクトはそれぞれ、リソース データベース (mssqlsystemresource) に一意なレコードとして存在しています。 リソース データベースは読み取り専用です。 オブジェクトへのリンクは、各データベースの sys スキーマでは 1 レコードとして表されます。
既定の名前解決では、修飾子のないプロシージャ名はリソース データベースとして解釈されます。 したがって、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 権限が必要です。
使用例
次の例では、public に対し、xp_cmdshell の EXECUTE 権限を拒否します。
DENY EXECUTE ON sys.xp_cmdshell TO public;
GO
関連項目
参照
Transact-SQL 構文表記規則 (Transact-SQL)
sys.database_permissions (Transact-SQL)