GRANT (T-SQL)
Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Memberikan izin pada yang dapat diamankan kepada prinsipal. Konsep umumnya adalah .GRANT <some permission> ON <some object> TO <some user, login, or group>
Untuk diskusi umum tentang izin, lihat Izin (Mesin Database).
Sintaks
Sintaks untuk SQL Server dan Azure SQL Database.
-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
| permission [ ( column [ , ...n ] ) ] [ , ...n ]
[ ON [ class :: ] securable ] TO principal [ , ...n ]
[ WITH GRANT OPTION ] [ AS principal ]
Sintaks untuk Azure Synapse Analytics dan Gudang Data Paralel dan Microsoft Fabric.
GRANT
<permission> [ , ...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ , ...n ]
[ WITH GRANT OPTION ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Argumen
SEMUA
Opsi ini tidak digunakan lagi dan dipertahankan hanya untuk kompatibilitas mundur. Ini tidak memberikan semua izin yang mungkin. Pemberian ALL
setara dengan memberikan izin berikut.
Yang dapat diamankan | Izin |
---|---|
Database | BACKUP DATABASE , , CREATE DATABASE BACKUP LOG , CREATE DEFAULT , CREATE FUNCTION , CREATE PROCEDURE , CREATE RULE , , CREATE TABLE , danCREATE VIEW |
Fungsi bernilai skalar | EXECUTE dan REFERENCES |
Fungsi bernilai tabel | DELETE , , INSERT REFERENCES , SELECT , danUPDATE |
Prosedur Tersimpan | EXECUTE |
Tabel | DELETE , , INSERT REFERENCES , SELECT , danUPDATE |
Tampilan | DELETE , , INSERT REFERENCES , SELECT , danUPDATE |
HAK ISTIMEWA
Disertakan untuk kepatuhan ISO. Tidak mengubah perilaku ALL
.
izin
Nama izin. Pemetaan izin yang valid ke yang dapat diamankan dijelaskan di bagian berikut.
column
Menentukan nama kolom dalam tabel tempat izin diberikan. Tanda kurung (
dan )
diperlukan.
kelas
Menentukan kelas yang dapat diamankan tempat izin diberikan. Kualifikasi ::
cakupan diperlukan.
Securable
Menentukan yang dapat diamankan di mana izin diberikan.
KEPADA prinsipal
Nama seorang kepala sekolah. Prinsipal tempat izin pada yang dapat diamankan dapat diberikan bervariasi, tergantung pada yang dapat diamankan. Lihat bagian berikut untuk kombinasi yang valid.
OPSI GRANT
Menunjukkan bahwa penerima hibah juga akan diberikan kemampuan untuk memberikan izin yang ditentukan kepada prinsipal lain.
Prinsipal AS
AS <principal>
Gunakan klausul untuk menunjukkan bahwa prinsipal yang dicatat sebagai pemberi izin harus menjadi prinsipal selain orang yang menjalankan pernyataan. Misalnya, anggap bahwa pengguna Mary
memiliki principal_id
dari 12
, dan pengguna Raul
adalah utama 15
. Maria menjalankan GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;
Sekarang sys.database_permissions
tabel menunjukkan bahwa grantor_prinicpal_id
itu 15
(Raul
) meskipun pernyataan itu benar-benar dijalankan oleh pengguna 12
(Mary
).
AS
Menggunakan klausa biasanya tidak disarankan kecuali Anda perlu secara eksplisit menentukan rantai izin. Untuk informasi selengkapnya, lihat Ringkasan Algoritma Pemeriksaan Izin.
Penggunaan AS
dalam pernyataan ini tidak menyiratkan kemampuan untuk meniru pengguna lain.
Keterangan
Sintaks GRANT
lengkap pernyataan itu kompleks. Diagram sintaks sebelumnya disederhanakan untuk menarik perhatian pada strukturnya. Sintaks lengkap untuk memberikan izin pada jaminan tertentu dijelaskan dalam artikel yang tercantum nanti dalam artikel ini.
Pernyataan REVOKE
dapat digunakan untuk menghapus izin yang diberikan, dan DENY
pernyataan dapat digunakan untuk mencegah prinsipal mendapatkan izin tertentu melalui GRANT
.
Memberikan izin akan menghapus DENY
atau REVOKE
izin tersebut pada securable yang ditentukan. Jika izin yang sama ditolak pada cakupan yang lebih tinggi yang berisi yang dapat diamankan, yang DENY
diutamakan. Tetapi mencabut izin yang diberikan pada cakupan yang lebih tinggi tidak diutamakan.
Izin tingkat database diberikan dalam cakupan database yang ditentukan. Jika pengguna memerlukan izin ke objek di database lain, buat akun pengguna di database lain, atau berikan akses akun pengguna ke database lain, serta database saat ini.
Perhatian
Tingkat DENY
tabel tidak lebih diutamakan daripada tingkat GRANT
kolom . Ketidakkonsistensian dalam hierarki izin ini telah dipertahankan demi kompatibilitas mundur. Ini akan dihapus dalam rilis mendatang.
Prosedur sp_helprotect
tersimpan sistem melaporkan izin pada tingkat database yang dapat diamankan.
Di Microsoft Fabric, CREATE USER
saat ini tidak dapat dijalankan secara eksplisit. Saat GRANT
atau DENY
dijalankan, pengguna dibuat secara otomatis.
DENGAN OPSI GRANT
GRANT ... WITH GRANT OPTION
menentukan bahwa prinsip keamanan yang menerima izin diberikan kemampuan untuk memberikan izin yang ditentukan ke akun keamanan lainnya. Ketika prinsipal yang menerima izin adalah peran atau grup Windows, AS
klausa harus digunakan ketika izin objek perlu diberikan lebih lanjut kepada pengguna yang bukan anggota grup atau peran. Karena hanya pengguna, bukan grup atau peran, yang GRANT
dapat menjalankan pernyataan, anggota grup atau peran tertentu harus menggunakan AS
klausul untuk secara eksplisit memanggil peran atau keanggotaan grup saat memberikan izin. Contoh berikut menunjukkan bagaimana WITH GRANT OPTION
digunakan ketika diberikan ke peran atau grup Windows.
-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;
-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;
-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;
Bagan izin SQL Server
Untuk bagan berukuran poster dari semua izin Mesin Database dalam format PDF, lihat https://aka.ms/sql-permissions-poster.
Izin
Pemberi hibah (atau prinsipal yang ditentukan dengan AS
opsi ) harus memiliki izin itu sendiri dengan GRANT OPTION
, atau izin yang lebih tinggi yang menyiratkan izin yang diberikan. Jika menggunakan opsi , AS
persyaratan tambahan berlaku. Lihat artikel khusus yang dapat diamankan untuk detailnya.
Pemilik objek dapat memberikan izin pada objek yang mereka miliki. Prinsipal dengan CONTROL
izin pada yang dapat diamankan dapat memberikan izin pada yang dapat diamankan.
CONTROL SERVER
Pemberi izin, seperti anggota peran server tetap sysadmin, dapat memberikan izin apa pun pada setiap yang dapat diamankan di server. CONTROL
Pemberi izin pada database, seperti anggota peran database tetap db_owner, dapat memberikan izin apa pun pada setiap yang dapat diamankan dalam database. CONTROL
Pemberi izin pada skema dapat memberikan izin apa pun pada objek apa pun dalam skema.
Contoh
Tabel berikut mencantumkan keamanan dan artikel yang menjelaskan sintaksis khusus yang dapat diamankan.