TOLAK (SQL bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Menolak izin kepada prinsipal. Mencegah prinsipal tersebut mewarisi izin melalui grup atau keanggotaan perannya. DENY lebih diutamakan daripada semua izin, kecuali bahwa DENY tidak berlaku untuk pemilik objek atau anggota peran server tetap sysadmin. Catatan Keamanan Anggota peran server tetap sysadmin dan pemilik objek tidak dapat ditolak izinnya."
Sintaks
-- Syntax for SQL Server and Azure SQL Database
-- 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 }
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
DENY
<permission> [ ,...n ]
[ ON [ <class_> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Catatan
Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
SEMUA
Opsi ini tidak menolak semua izin yang mungkin. Menolak SEMUA setara dengan menolak izin berikut.
Jika yang dapat diamankan adalah database, ALL berarti BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, dan CREATE VIEW.
Jika yang dapat diamankan adalah fungsi skalar, ALL berarti EXECUTE dan REFERENCES.
Jika yang dapat diamankan adalah fungsi bernilai tabel, ALL berarti DELETE, INSERT, REFERENCES, SELECT, dan UPDATE.
Jika yang dapat diamankan adalah prosedur tersimpan, SEMUA berarti EXECUTE.
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 DENY ALL tidak digunakan lagi. Fitur ini akan dihapus dalam versi Microsoft SQL Server mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Tolak izin tertentu sebagai gantinya.
HAK ISTIMEWA
Disertakan untuk kepatuhan ISO. Tidak mengubah perilaku ALL.
Izin
Adalah nama izin. Pemetaan izin yang valid ke securables dijelaskan dalam sub-topik yang tercantum di bawah ini.
kolom
Menentukan nama kolom dalam tabel tempat izin ditolak. Tanda kurung () diperlukan.
class
Menentukan kelas yang dapat diamankan tempat izin ditolak. Kualifikasi cakupan :: diperlukan.
Securable
Menentukan aman di mana izin ditolak.
KEPADA prinsipal
Adalah nama prinsipal. Prinsipal yang izinnya diamankan dapat ditolak bervariasi, tergantung pada keamanannya. Lihat topik khusus yang dapat diamankan yang tercantum di bawah ini untuk kombinasi yang valid.
CASCADE
Menunjukkan bahwa izin ditolak untuk prinsipal yang ditentukan dan kepada semua prinsipal lain tempat prinsipal memberikan izin. Diperlukan ketika prinsipal memiliki izin dengan GRANT OPTION.
Prinsipal AS
Menentukan prinsipal dari mana prinsipal yang menjalankan kueri ini memperoleh haknya untuk menolak izin.
Gunakan klausul utama AS untuk menunjukkan bahwa prinsipal yang dicatat sebagai penolakan izin harus menjadi prinsipal selain orang yang menjalankan pernyataan. Misalnya, anggap bahwa pengguna Mary adalah principal_id 12 dan pengguna Raul adalah utama 15. Mary mengeksekusi DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Sekarang tabel sys.database_permissions akan menunjukkan bahwa grantor_prinicpal_id pernyataan tolak adalah 15 (Raul) meskipun pernyataan itu benar-benar dieksekusi oleh pengguna 13 (Mary).
Penggunaan AS dalam pernyataan ini tidak menyiratkan kemampuan untuk meniru pengguna lain.
Keterangan
Sintaks lengkap pernyataan DENY rumit. Diagram sintaks di atas disederhanakan untuk menarik perhatian pada strukturnya. Sintaks lengkap untuk menolak izin pada securable tertentu dijelaskan dalam topik yang tercantum di bawah ini.
DENY akan gagal jika CASCADE tidak ditentukan saat menolak izin kepada prinsipal yang diberikan izin tersebut dengan GRANT OPTION yang ditentukan.
Prosedur tersimpan sistem sp_helprotect melaporkan izin pada tingkat database yang dapat diamankan.
Perhatian
DENY tingkat tabel tidak lebih diutamakan daripada GRANT tingkat kolom. Ketidakkonsistensian dalam hierarki izin ini telah dipertahankan demi kompatibilitas mundur. Ini akan dihapus dalam rilis mendatang.
Perhatian
Menolak izin CONTROL pada database secara implisit menolak izin CONNECT pada database. Prinsipal yang ditolak izin CONTROL pada database tidak akan dapat tersambung ke database tersebut.
Perhatian
Menolak izin CONTROL SERVER secara implisit menolak izin CONNECT SQL pada server. Prinsipal yang ditolak izin SERVER KONTROL pada server tidak akan dapat tersambung ke server tersebut.
Izin
Pemanggil (atau prinsipal yang ditentukan dengan opsi AS) harus memiliki izin CONTROL pada izin yang dapat diamankan, atau izin yang lebih tinggi yang menyiratkan izin CONTROL pada yang dapat diamankan. Jika menggunakan opsi AS, prinsipal yang ditentukan harus memiliki keamanan di mana izin ditolak.
Pemberi izin CONTROL SERVER, seperti anggota peran server tetap sysadmin, dapat menolak izin apa pun pada setiap yang dapat diamankan di server. Pemberi izin CONTROL pada database, seperti anggota peran database tetap db_owner, dapat menolak izin apa pun pada setiap yang dapat diamankan dalam database. Pemberi izin CONTROL pada skema dapat menolak izin apa pun pada objek apa pun dalam skema. Jika klausul AS digunakan, prinsipal yang ditentukan harus memiliki izin yang dapat diamankan di mana izin ditolak.
Contoh
Tabel berikut mencantumkan securables dan topik yang menjelaskan sintaksis khusus yang dapat diamankan.
Lihat juga
MENCABUT (SQL Bertransaksi)
sp_addlogin (SQL Bertransaksi)
sp_adduser (SQL Bertransaksi)
sp_changedbowner (SQL Bertransaksi)
sp_dropuser (SQL Bertransaksi)
sp_helprotect (SQL Bertransaksi)
sp_helpuser (SQL Bertransaksi)
