MENCABUT (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Menghapus izin yang diberikan atau ditolak sebelumnya.

Konvensi sintaks transact-SQL

Sintaksis

-- 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 and Microsoft Fabric
  
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  
}  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

OPSI GRANT UNTUK
Menunjukkan bahwa kemampuan untuk memberikan izin yang ditentukan akan dicabut. Ini diperlukan saat Anda menggunakan argumen CASCADE.

Penting

Jika prinsipal memiliki izin yang ditentukan tanpa opsi GRANT, izin itu sendiri akan dicabut.

SEMUA
Berlaku untuk: SQL Server 2008 (10.0.x) dan yang lebih baru

Opsi ini tidak mencabut semua izin yang mungkin. Mencabut SEMUA setara dengan mencabut izin berikut.

  • Jika yang dapat diamankan adalah database, SEMUA berarti DATABASE CADANGAN, LOG CADANGAN, BUAT DATABASE, BUAT DEFAULT, BUAT FUNGSI, BUAT PROSEDUR, BUAT ATURAN, BUAT TABEL, dan BUAT TAMPILAN.

  • Jika yang dapat diamankan adalah fungsi skalar, SEMUA berarti EXECUTE dan REFERENCES.

  • Jika yang dapat diamankan adalah fungsi bernilai tabel, SEMUA berarti DELETE, INSERT, REFERENCES, SELECT, dan UPDATE.

  • Jika yang dapat diamankan adalah prosedur tersimpan, SEMUA berarti JALANKAN.

  • Jika yang dapat diamankan adalah tabel, SEMUA berarti HAPUS, SISIPKAN, REFERENSI, PILIH, dan PERBARUI.

  • Jika yang dapat diamankan adalah tampilan, SEMUA berarti HAPUS, SISIPKAN, REFERENSI, PILIH, dan PERBARUI.

Catatan

Sintaks REVOKE ALL tidak digunakan lagi. Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Cabut izin tertentu sebagai gantinya.

HAK ISTIMEWA
Disertakan untuk kepatuhan ISO. Tidak mengubah perilaku ALL.

Izin
Adalah nama izin. Pemetaan izin yang valid ke yang dapat diamankan dijelaskan dalam topik yang tercantum dalam Sintaksis Khusus yang Dapat Diamankan nanti dalam topik ini.

column
Menentukan nama kolom dalam tabel tempat izin dicabut. Tanda kurung diperlukan.

kelas
Menentukan kelas yang dapat diamankan tempat izin dicabut. Kualifikasi cakupan :: diperlukan.

Securable
Menentukan yang dapat diamankan di mana izin sedang dicabut.

KE | DARI prinsipal
Adalah nama seorang prinsipal. Prinsipal tempat izin pada yang dapat diamankan dapat dicabut bervariasi, tergantung pada yang dapat diamankan. Untuk informasi selengkapnya tentang kombinasi yang valid, lihat topik yang tercantum dalam Sintaks khusus Yang Dapat Diamankan nanti dalam topik ini.

CASCADE
Menunjukkan bahwa izin yang dicabut juga dicabut dari prinsipal lain yang telah diberikan oleh prinsipal ini. Saat Anda menggunakan argumen CASCADE, Anda juga harus menyertakan argumen GRANT OPTION FOR.

Perhatian

Pencabutan izin berkala yang diberikan WITH GRANT OPTION akan mencabut izin GRANT dan DENY tersebut.

Prinsipal AS
Gunakan klausul utama AS untuk menunjukkan bahwa Anda mencabut izin yang diberikan oleh prinsipal selain Anda. Misalnya, anggaplah bahwa pengguna Mary adalah principal_id 12 dan pengguna Raul adalah principal_id 15. Mary dan Raul memberikan pengguna bernama Steven izin yang sama. Tabel sys.database_permissions akan menunjukkan izin dua kali tetapi masing-masing akan memiliki nilai grantor_principal_id yang berbeda. Maria dapat mencabut izin menggunakan AS RAUL klausul untuk menghapus pemberian izin Raul.

Penggunaan AS dalam pernyataan ini tidak menyiratkan kemampuan untuk meniru pengguna lain.

Keterangan

Sintaks lengkap pernyataan REVOKE bersifat kompleks. Diagram sintaks di atas disederhanakan untuk menarik perhatian pada strukturnya. Sintaks lengkap untuk mencabut izin pada securables tertentu dijelaskan dalam topik yang tercantum dalam Sintaksis Khusus Yang Dapat Diamankan nanti dalam topik ini.

Pernyataan REVOKE dapat digunakan untuk menghapus izin yang diberikan, dan pernyataan DENY dapat digunakan untuk mencegah prinsipal mendapatkan izin tertentu melalui GRANT.

Memberikan izin akan menghapus TOLAK atau PENCABUTAN izin tersebut pada yang ditentukan yang dapat diamankan. Jika izin yang sama ditolak pada cakupan yang lebih tinggi yang berisi yang dapat diamankan, TOLAK diutamakan. Namun, mencabut izin yang diberikan pada cakupan yang lebih tinggi tidak diutamakan.

Perhatian

TOLAK tingkat tabel tidak lebih diutamakan daripada GRANT tingkat kolom. Ketidakkonsistensian dalam hierarki izin ini telah dipertahankan untuk kompatibilitas mundur. Ini akan dihapus dalam rilis mendatang.

Prosedur tersimpan sistem sp_helprotect melaporkan izin pada tingkat database yang dapat diamankan

Pernyataan REVOKE akan gagal jika CASCADE tidak ditentukan ketika Anda mencabut izin dari prinsipal yang diberikan izin tersebut dengan GRANT OPTION yang ditentukan.

Izin

Prinsipal dengan izin CONTROL pada yang dapat diamankan dapat mencabut izin pada yang dapat diamankan. Pemilik objek dapat mencabut izin pada objek yang mereka miliki.

Pemberi izin SERVER KONTROL, seperti anggota peran server tetap sysadmin, dapat mencabut izin apa pun pada setiap yang dapat diamankan di server. Pemberi izin CONTROL pada database, seperti anggota peran database tetap db_owner, dapat mencabut izin apa pun pada setiap yang dapat diamankan dalam database. Pemberi izin CONTROL pada skema dapat mencabut izin apa pun pada objek apa pun dalam skema.

Sintaksis khusus yang dapat diamankan

Tabel berikut mencantumkan securables dan topik yang menjelaskan sintaksis khusus yang dapat diamankan.

Yang dapat diamankan Topik
Peran Aplikasi MENCABUT Izin Utama Database (Transact-SQL)
Rakitan MENCABUT Izin Rakitan (Transact-SQL)
Kunci Asimetris MENCABUT Izin Kunci Asimetris (Transact-SQL)
Grup Ketersediaan MENCABUT Izin Grup Ketersediaan (Transact-SQL)
Sertifikat MENCABUT Izin Sertifikat (Transact-SQL)
Contract MENCABUT Izin Broker Layanan (Transact-SQL)
Database MENCABUT Izin Database (Transact-SQL)
Titik akhir MENCABUT Izin Titik Akhir (Transact-SQL)
Kredensial Cakupan Database MENCABUT Kredensial Cakupan Database (Transact-SQL)
Katalog teks lengkap MENCABUT Izin Teks Lengkap (Transact-SQL)
Daftar Henti Teks Lengkap MENCABUT Izin Teks Lengkap (Transact-SQL)
Fungsi MENCABUT Izin Objek (Transact-SQL)
Masuk MENCABUT Izin Utama Server (Transact-SQL)
Jenis Pesan MENCABUT Izin Broker Layanan (Transact-SQL)
Objek MENCABUT Izin Objek (Transact-SQL)
Antrean MENCABUT Izin Objek (Transact-SQL)
Pengikatan Layanan Jarak Jauh MENCABUT Izin Broker Layanan (Transact-SQL)
Peran MENCABUT Izin Utama Database (Transact-SQL)
Rute MENCABUT Izin Broker Layanan (Transact-SQL)
Skema MENCABUT Izin Skema (Transact-SQL)
Daftar Properti Pencarian MENCABUT Izin Daftar Properti Pencarian (Transact-SQL)
Server MENCABUT Izin Server (Transact-SQL)
Layanan MENCABUT Izin Broker Layanan (Transact-SQL)
Prosedur Tersimpan MENCABUT Izin Objek (Transact-SQL)
Kunci Konten MENCABUT Izin Kunci Konten (Transact-SQL)
Sinonim MENCABUT Izin Objek (Transact-SQL)
Objek sistem MENCABUT Izin Objek Sistem (Transact-SQL)
Tabel MENCABUT Izin Objek (Transact-SQL)
Jenis MENCABUT Izin Jenis (Transact-SQL)
Pengguna MENCABUT Izin Utama Database (Transact-SQL)
Tampilan MENCABUT Izin Objek (Transact-SQL)
Koleksi Skema XML MENCABUT Izin Pengumpulan Skema XML (Transact-SQL)

Contoh

J. Memberikan dan mencabut

Berlaku untuk: SQL Server, SQL Database

Contoh berikut membuat skema, pengguna database mandiri, dan peran baru pada database pengguna. Ini menambahkan pengguna ke peran, memberikan izin SELECT pada skema ke peran, lalu menghapus (REVOKE) izin tersebut ke peran tersebut.

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
 

Lihat Juga

Hierarki Izin (Mesin Database)
TOLAK (Transact-SQL)
GRANT (T-SQL)
sp_addlogin (T-SQL)
sp_adduser (T-SQL)
sp_changedbowner (T-SQL)
sp_dropuser (T-SQL)
sp_helprotect (T-SQL)
sp_helpuser (T-SQL)