適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric の SQL データベース
プリンシパルに対する権限を拒否します。 プリンシパルが、そのグループまたはロールのメンバーシップから権限を継承しないようにします。 DENY すべての権限に優先されますが、オブジェクト所有者やsysadmin固定サーバーの役割のメンバーには適用されません DENY 。 セキュリティに関する注意 sysadmin 固定サーバー ロールのメンバーとオブジェクトの所有者の権限を拒否することはできません。
Syntax
SQL Server、Azure SQL Database、および Fabric SQL データベースの構文
-- Simplified syntax for DENY
DENY { ALL [ PRIVILEGES ] }
| <permission> [ ( column [ ,...n ] ) ] [ ,...n ]
[ ON [ <class> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE] [ AS principal ]
[;]
<permission> ::=
{ see the tables below }
<class> ::=
{ see the tables below }
Azure Synapse Analytics と Parallel Data Warehouse と Microsoft Fabric Warehouse の構文
DENY
<permission> [ ,...n ]
[ ON [ <class_> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Arguments
ALL
このオプションでは、可能な権限がすべて拒否されるわけではありません。 ALL を指定すると、次の権限が拒否されます。
もしセキュア対象がデータベースであれば、ALLは BACKUPDATABASE、 BACKUP ログ、 CREATE DATABASE、 CREATE DEFAULT、 CREATE FUNCTION、 CREATE PROCEDURE、 CREATE RULE、 CREATE TABLE、 CREATE VIEWを意味します。
セキュリティ保護可能なリソースがスカラー関数の場合、EXECUTE および REFERENCES。
もしセキュラブルがテーブル値関数であれば、ALLは DELETE、 INSERT、参照、SELECT、 UPDATEを意味します。
セキュリティ保護可能なリソースがストアド プロシージャの場合、EXECUTE。
もしセキュア可能がテーブルであれば、ALLは DELETE、 INSERT、参照、SELECT、 UPDATEを意味します。
もしセキュア可能がビューであれば、ALLは DELETE、 INSERT、参照、SELECT、 UPDATEを意味します。
Note
DENY ALL構文は非推奨となっています。 この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに特定の権限を拒否してください。
PRIVILEGES
ISO 準拠のために用意されています。 ALL の動作は変更されません。
permission
権限の名前を指定します。 権限とセキュリティ保護可能なリソースの有効な組み合わせについては、後のトピックを参照してください。
column
権限を拒否するテーブルの列の名前を指定します。 かっこ () で囲む必要があります。
class
権限を拒否するセキュリティ保護可能なリソースのクラスを指定します。 スコープ修飾子 :: が必要です。
securable
権限を拒否するセキュリティ保護可能なリソースを指定します。
TO校長
プリンシパルの名前です。 セキュリティ保護可能なリソースに対する権限を拒否できるプリンシパルは、そのリソースによって異なります。 有効な組み合わせについては、後のセキュリティ保護可能なリソースの各トピックを参照してください。
CASCADE
指定したプリンシパル、およびこのプリンシパルによって権限が許可されている他のすべてのプリンシパルに対しても、同じ権限を拒否することを示します。 校長が許可を得てオプション GRANT 必要です。
AS校長
このクエリを実行するプリンシパルが権限を拒否する権利を取得した、元のプリンシパルを指定します。
AS DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; 実行sys.database_permissionsテーブルは、ステートメントが実際にユーザー 13 (Mary) によって実行された場合でも、deny ステートメントのgrantor_principal_idが 15 (ラウル) であることを示します。
このステートメントで AS を使っても、別のユーザーを偽装できることは意味しません。
Remarks
DENY ステートメントの完全な構文は複雑です。 前の構文ダイアグラムは、構造をわかりやすくするために簡略化されています。 セキュリティ保護可能なリソースに対する権限を拒否するための完全な構文については、後のトピックを参照してください。
DENY もしCASCADEが指定されない場合、その許可が付与されたプリンシパルに対してその許可を拒否する場合 GRANT 失敗します。
システム ストアド プロシージャ sp_helprotect では、データベース レベルのセキュリティ保護可能なリソースに対する権限をレポートします。
Microsoft Fabricでは、現時点ではCREATE USERを明示的に実行することはできません。 GRANTやDENYが実行されると、ユーザーは自動的に作成されます。
Caution
テーブル レベルの DENY は、列レベルの GRANTよりも優先されません。 この動作は権限の階層内で一貫していませんが、旧バージョンとの互換性のために保持されています。 将来のリリースでは削除される予定です。
Caution
データベースに対する CONTROL 権限を拒否すると、そのデータベースに対する CONNECT 権限が暗黙的に拒否されます。 データベースに対する CONTROL 権限を拒否されたプリンシパルは、そのデータベースに接続できません。
Caution
CONTROL SERVER 権限を拒否すると、そのサーバーに対する CONNECT SQL 権限が暗黙的に拒否されます。 サーバーに対する CONTROL SERVER 権限が拒否されたプリンシパルは、そのサーバーに接続できません。
Permissions
呼び出し元 (または AS オプションで指定されたプリンシパル) は、セキュリティ保護可能なリソースに対する CONTROL 権限、またはセキュリティ保護可能なリソースに対する CONTROL 権限を暗黙的に与える上位の権限を保持している必要があります。 AS オプションを使用する場合、指定されたプリンシパルは、権限が拒否されるセキュリティ保護可能なリソースを所有している必要があります。
固定サーバー ロール sysadmin のメンバーなど、CONTROL SERVER 権限が許可されているユーザーは、サーバー内のセキュリティ保護可能なリソースに対する権限を拒否できます。 db_owner 固定データベース ロールのメンバーなど、データベースに対する CONTROL 権限が許可されているユーザーは、データベース内のセキュリティ保護可能なリソースに対する権限を拒否できます。 スキーマに対する CONTROL 権限が許可されているユーザーは、スキーマ内のオブジェクトに対する権限を拒否できます。 AS 句を使用する場合、指定されるプリンシパルは、権限の拒否対象となるセキュリティ保護可能なリソースを所有している必要があります。
Examples
次の表は、セキュリティ保護可能なリソースと、セキュリティ保護可能なリソース固有の構文について説明しているトピックの一覧です。
こちらもご覧ください
REVOKE (Transact-SQL)
sp_addlogin(Transact-SQL)
sp_adduser(Transact-SQL)
sp_changedbowner(Transact-SQL)
sp_dropuser(Transact-SQL)
sp_helprotect(Transact-SQL)
sp_helpuser(Transact-SQL)