REVOKE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

以前に許可または拒否した権限を取り消します。

Transact-SQL 構文表記規則

Syntax

SQL Server、Azure SQL Database、および Fabric SQL データベースの構文

-- Simplified syntax for REVOKE  
REVOKE [ GRANT OPTION FOR ]  
      {   
        [ ALL [ PRIVILEGES ] ]  
        |  
                permission [ ( column [ ,...n ] ) ] [ ,...n ]  
      }  
      [ ON [ class :: ] securable ]   
      { TO | FROM } principal [ ,...n ]   
      [ CASCADE] [ AS principal ]  

Azure Synapse Analytics、Parallel Data Warehouse、および Microsoft Fabric Warehouse の構文

REVOKE
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]   
    [ FROM | TO ] principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class_type> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

Arguments

GRANT オプション
指定した権限を与える許可を取り消すことを示します。 CASCADE 引数を使用する場合、これは必須です。

Important

もし校長が指定された許可を得て GRANT オプションがない場合、その許可自体は取り消されます。

ALL
適用対象: SQL Server 2008 (10.0.x) 以降

このオプションでは、可能な権限がすべて取り消されるわけではありません。 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

REVOKE ALL構文は非推奨となっています。 この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに特定の権限を取り消してください。

PRIVILEGES
ISO 準拠のために用意されています。 ALL の動作は変更されません。

permission
権限の名前を指定します。 セキュリティ保護可能なリソースと権限の有効な組み合わせについては、後の「セキュリティ保護可能なリソース別の構文」の一覧を参照してください。

column
権限を取り消すテーブルの列の名前を指定します。 かっこが必要です。

class
権限を取り消すセキュリティ保護可能なリソースのクラスを指定します。 スコープ修飾子 :: が必要です。

securable
権限を取り消すセキュリティ保護可能なリソースを指定します。

TO |FROM プリンシパル
プリンシパルの名前です。 セキュリティ保護可能なリソースに対する権限を取り消すことのできるプリンシパルは、そのリソースによって異なります。 有効な組み合わせの詳細については、後の「セキュリティ保護可能なリソース別の構文」の一覧を参照してください。

CASCADE
このプリンシパルによって権限が許可されている他のプリンシパルからも、同じ権限が取り消されることを示します。 CASCADE引数を使う場合は、 GRANT OPTION FOR 引数も含めなければなりません。

Caution

WITH GRANT OPTIONで付与された許可の連鎖的な取り消しは、その許可の GRANT と DENY の両方を取り消します。

AS校長
自分以外のプリンシパルによって付与された権限を取り消すことを示すには、AS 句を使用します。 たとえば、ユーザー Mary の principal_id が 12、ユーザー Raul の principal_id が 15 であるとします。 Mary と Raul はどちらも、Steven という名前のユーザーに同じ権限を付与します。 sys.database_permissions テーブルでは、同じ権限が 2 回表示されますが、grantor_prinicpal_id の値は異なります。 Mary は、AS RAUL 句を使って、Raul の権限付与を取り消すことができます。

このステートメントで AS を使っても、別のユーザーを偽装できることは意味しません。

Remarks

REVOKE ステートメントの完全な構文は複雑です。 前の構文ダイアグラムは、構造をわかりやすくするために簡略化されています。 特定のセキュリティ保護可能なリソースに対する権限を取り消すための完全な構文については、後の「セキュリティ保護可能なリソース別の構文」の一覧を参照してください。

REVOKE ステートメントを使用して付与されたアクセス許可を削除できます。また、DENY ステートメントを使用して、プリンシパルがGRANTを介して特定のアクセス許可を取得できないようにすることができます。

アクセス許可を付与すると、指定したセキュリティ保護可能なリソースに対するアクセス許可の DENY または REVOKE が削除されます。 セキュリティ保護可能なリソースを含む上位のスコープで同じアクセス許可が拒否された場合、 DENY が優先されます。 ただし、上位スコープで許可されている権限を取り消そうとしても、その REVOKE ステートメントは優先されません。

Caution

テーブル レベルの DENY は、列レベルの GRANTよりも優先されません。 この動作は権限の階層内で一貫していませんが、旧バージョンとの互換性のために保持されています。 将来のリリースでは削除される予定です。

システム ストアド プロシージャ sp_helprotect では、データベース レベルのセキュリティ保護可能なリソースに対する権限がレポートされます

REVOKE文は、CASCADEが指定されていない場合、その権限を付与されたプリンシパルからの許可を取り消す際に失敗します。その権限はオプションが指定されていてGRANTです。

Permissions

セキュリティ保護可能なリソースに対して CONTROL 権限があるプリンシパルは、そのセキュリティ保護可能なリソースの権限を取り消すことができます。 オブジェクトの所有者は、所有するオブジェクトに対する権限を取り消すことができます。

sysadmin 固定サーバー ロールのメンバーなど、CONTROL SERVER 権限が許可されているユーザーは、サーバー内のセキュリティ保護可能なリソースに対する権限を取り消すことができます。 db_owner 固定データベース ロールのメンバーなど、データベースに対する CONTROL 権限が許可されているユーザーは、データベース内のセキュリティ保護可能なリソースに対する権限を取り消すことができます。 スキーマに対する CONTROL 権限が許可されているユーザーは、スキーマ内のオブジェクトに対する権限を取り消すことができます。

セキュラブル特化構文論

次の表は、セキュリティ保護可能なリソースと、セキュリティ保護可能なリソース固有の構文について説明しているトピックの一覧です。

Securable Topic
アプリケーション ロール REVOKE データベースプリンシパルパーセンテーション(Transact-SQL)
Assembly REVOKE アセンブリ権限(Transact-SQL)
非対称キー REVOKE 非対称鍵権限(Transact-SQL)
可用性グループ REVOKE 可用性グループ権限(Transact-SQL)
Certificate REVOKE 証明書許可(Transact-SQL)
Contract REVOKE Service Broker のアクセス許可 (Transact-SQL)
Database REVOKE データベース権限 (Transact-SQL)
Endpoint REVOKE エンドポイントのアクセス許可 (Transact-SQL)
データベース スコープ資格情報 REVOKE データベーススコープ認証(Transact-SQL)
全文目録 REVOKE Full-Text パーセンテーション(Transact-SQL)
Full-Text ストップリスト REVOKE Full-Text パーセンテーション(Transact-SQL)
Function REVOKE オブジェクトの権限 (Transact-SQL)
Login REVOKE サーバー プリンシパルのアクセス許可 (Transact-SQL)
メッセージの種類 REVOKE Service Broker のアクセス許可 (Transact-SQL)
Object REVOKE オブジェクトの権限 (Transact-SQL)
Queue REVOKE オブジェクトの権限 (Transact-SQL)
リモート サービス バインド REVOKE Service Broker のアクセス許可 (Transact-SQL)
Role REVOKE データベースプリンシパルパーセンテーション(Transact-SQL)
Route REVOKE Service Broker のアクセス許可 (Transact-SQL)
Schema REVOKE スキーマ権限(Transact-SQL)
検索プロパティ リスト REVOKE 検索プロパティリストの権限(Transact-SQL)
Server REVOKE サーバーのアクセス許可 (Transact-SQL)
Service REVOKE Service Broker のアクセス許可 (Transact-SQL)
ストアド プロシージャ REVOKE オブジェクトの権限 (Transact-SQL)
対称キー REVOKE 対称鍵権限(Transact-SQL)
Synonym REVOKE オブジェクトの権限 (Transact-SQL)
システム オブジェクト REVOKE システム オブジェクトの権限 (Transact-SQL)
Table REVOKE オブジェクトの権限 (Transact-SQL)
タイプ REVOKE タイプ権限(Transact-SQL)
User REVOKE データベースプリンシパルパーセンテーション(Transact-SQL)
View REVOKE オブジェクトの権限 (Transact-SQL)
XML スキーマ コレクション REVOKE XMLスキーマ収集権限(Transact-SQL)

Examples

A. 許可と取り消し

適用対象: SQL Server, SQL Database

次の例では、スキーマ、包含データベース ユーザー、ユーザー データベースの新しいロールを作成します。 ロールにユーザーを追加し、そのロールにスキーマに対する SELECT 権限を付与した後、ロールに対して (REVOKE) 権限を削除します。

CREATE SCHEMA Sales;  
GO
CREATE USER Joe without login;
GO
CREATE ROLE Vendors;
GO
ALTER ROLE Vendors ADD MEMBER Joe; 
GO
GRANT SELECT ON SCHEMA :: Sales TO Vendors;
GO
REVOKE SELECT ON SCHEMA :: Sales TO Vendors;
GO
 

こちらもご覧ください

権限の階層 (データベース エンジン)
DENY (Transact-SQL)
GRANT (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)