REVOKE (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

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

トピック リンク アイコン Transact-SQL 構文表記規則

構文

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for REVOKE  
REVOKE [ GRANT OPTION FOR ]  
      {   
        [ ALL [ PRIVILEGES ] ]  
        |  
                permission [ ( column [ ,...n ] ) ] [ ,...n ]  
      }  
      [ ON [ class :: ] securable ]   
      { TO | FROM } principal [ ,...n ]   
      [ CASCADE] [ AS principal ]  
-- Syntax for Azure Synapse Analytics and Parallel Data 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  
}  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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

重要

指定した権限が GRANT オプションなしでプリンシパルに許可されている場合は、その権限自体が取り消されます。

ALL
適用対象: SQL Server 2008 以降

このオプションでは、可能な権限がすべて取り消されるわけではありません。 ALL を指定すると、次の権限が取り消されます。

  • セキュリティ保護可能なリソースがデータベースの場合、ALL は BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、および CREATE VIEW を意味します。

  • セキュリティ保護可能なリソースがスカラー関数の場合、EXECUTE および REFERENCES。

  • セキュリティ保護可能なリソースがテーブル値関数の場合、DELETE、INSERT、REFERENCES、SELECT、UPDATE。

  • セキュリティ保護可能なリソースがストアド プロシージャの場合、EXECUTE。

  • セキュリティ保護可能なリソースがテーブルの場合、ALL は DELETE、INSERT、REFERENCES、SELECT、および UPDATE を意味します。

  • セキュリティ保護可能なリソースがビューの場合、ALL は DELETE、INSERT、REFERENCES、SELECT、および UPDATE を意味します。

注意

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

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

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

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

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

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

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

CASCADE
このプリンシパルによって権限が許可されている他のプリンシパルからも、同じ権限が取り消されることを示します。 CASCADE 引数を使用する場合は、GRANT OPTION FOR 引数も指定する必要があります。

注意事項

WITH GRANT OPTION で許可されている権限を CASCADE で取り消すと、その権限の GRANT および DENY の両方が取り消されます。

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

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

解説

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

許可された権限を取り消す場合は REVOKE ステートメントを使用します。また、GRANT によってプリンシパルに特定の権限が許可されないようにするには DENY ステートメントを使用します。

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

注意事項

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

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

GRANT OPTION で権限が許可されたプリンシパルから権限を取り消すときに CASCADE を指定しない場合、REVOKE ステートメントは失敗します。

アクセス許可

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

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

セキュリティ保護可能なリソース別の構文

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

セキュリティ保護可能 トピック
アプリケーション ロール REVOKE (データベース プリンシパルの権限の取り消し) (Transact-SQL)
アセンブリ REVOKE (アセンブリの権限の取り消し) (Transact-SQL)
非対称キー REVOKE (非対称キーの権限の取り消し) (Transact-SQL)
可用性グループ REVOKE (可用性グループの権限の取り消し) (Transact-SQL)
Certificate REVOKE (証明書の権限の取り消し) (Transact-SQL)
コントラクト REVOKE (Service Broker の権限の拒否) (Transact-SQL)
データベース REVOKE (データベースの権限の取り消し) (Transact-SQL)
エンドポイント REVOKE (エンドポイントの権限の取り消し) (Transact-SQL)
データベース スコープ資格情報 REVOKE (データベース スコープの資格情報の取り消し) (Transact-SQL)
フルテキスト カタログ REVOKE (フルテキストの権限の取り消し) (Transact-SQL)
フルテキスト ストップリスト REVOKE (フルテキストの権限の取り消し) (Transact-SQL)
関数 REVOKE (オブジェクトの権限の取り消し) (Transact-SQL)
ログイン REVOKE (サーバー プリンシパルの権限の取り消し) (Transact-SQL)
メッセージ型 REVOKE (Service Broker の権限の拒否) (Transact-SQL)
Object REVOKE (オブジェクトの権限の取り消し) (Transact-SQL)
キュー REVOKE (オブジェクトの権限の取り消し) (Transact-SQL)
リモート サービス バインド REVOKE (Service Broker の権限の拒否) (Transact-SQL)
ロール REVOKE (データベース プリンシパルの権限の取り消し) (Transact-SQL)
ルート REVOKE (Service Broker の権限の拒否) (Transact-SQL)
スキーマ REVOKE (スキーマ権限の取り消し) (Transact-SQL)
検索プロパティ リスト REVOKE (検索プロパティ リスト権限の取り消し) (Transact-SQL)
サーバー REVOKE (サーバーの権限の取り消し) (Transact-SQL)
サービス REVOKE (Service Broker の権限の拒否) (Transact-SQL)
ストアド プロシージャ REVOKE (オブジェクトの権限の取り消し) (Transact-SQL)
対称キー REVOKE (対称キーの権限の取り消し) (Transact-SQL)
シノニム REVOKE (オブジェクトの権限の取り消し) (Transact-SQL)
システム オブジェクト REVOKE (システム オブジェクトの権限の取り消し) (Transact-SQL)
Table REVOKE (オブジェクトの権限の取り消し) (Transact-SQL)
種類 REVOKE (型の権限の取り消し) (Transact-SQL)
ユーザー REVOKE (データベース プリンシパルの権限の取り消し) (Transact-SQL)
View REVOKE (オブジェクトの権限の取り消し) (Transact-SQL)
XML スキーマ コレクション REVOKE (XML スキーマ コレクションの権限の取り消し) (Transact-SQL)

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)