GRANT (T-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

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).

Konvensi sintaks transact-SQL

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
}

Catatan

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

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 DATABASEBACKUP LOG, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, , CREATE TABLE, danCREATE VIEW
Fungsi bernilai skalar EXECUTE dan REFERENCES
Fungsi bernilai tabel DELETE, , INSERTREFERENCES, SELECT, danUPDATE
Prosedur Tersimpan EXECUTE
Table DELETE, , INSERTREFERENCES, SELECT, danUPDATE
Tampilkan DELETE, , INSERTREFERENCES, 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 GRANTkolom . 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.

Yang dapat diamankan GRANT sintaks
Peran Aplikasi IZIN Utama Grant Database (Transact-SQL)
Rakitan IZIN Perakitan GRANT (Transact-SQL)
Kunci Asimetris IZIN Kunci Asimetris GRANT (Transact-SQL)
Grup Ketersediaan IZIN GRUP Ketersediaan GRANT (Transact-SQL)
Sertifikat Izin Sertifikat GRANT (Transact-SQL)
Contract Izin Broker Layanan GRANT (Transact-SQL)
Database IZIN GRANT Database (Transact-SQL)
Kredensial Cakupan Database Grant Database Scoped Credential (Transact-SQL)
Titik akhir IZIN TITIK Akhir GRANT (Transact-SQL)
Katalog Teks Lengkap IZIN TEKS Lengkap (Transact-SQL)
Daftar Henti Teks Lengkap IZIN TEKS Lengkap (Transact-SQL)
Function IZIN Objek GRANT (Transact-SQL)
Masuk IZIN Utama Server GRANT (Transact-SQL)
Jenis Pesan Izin Broker Layanan GRANT (Transact-SQL)
Objek IZIN Objek GRANT (Transact-SQL)
Queue IZIN Objek GRANT (Transact-SQL)
Pengikatan Layanan Jarak Jauh Izin Broker Layanan GRANT (Transact-SQL)
Role IZIN Utama Grant Database (Transact-SQL)
Rute Izin Broker Layanan GRANT (Transact-SQL)
Skema IZIN Skema GRANT (Transact-SQL)
Daftar Properti Pencarian IZIN Daftar Properti Pencarian GRANT (Transact-SQL)
Server IZIN SERVER GRANT (Transact-SQL)
Service Izin Broker Layanan GRANT (Transact-SQL)
Prosedur Tersimpan IZIN Objek GRANT (Transact-SQL)
Kunci Konten IZIN Kunci Konten GRANT (Transact-SQL)
Sinonim IZIN Objek GRANT (Transact-SQL)
Objek sistem IZIN Objek Sistem GRANT (Transact-SQL)
Table IZIN Objek GRANT (Transact-SQL)
Jenis Izin Jenis GRANT (Transact-SQL)
User IZIN Utama Grant Database (Transact-SQL)
Tampilkan IZIN Objek GRANT (Transact-SQL)
Koleksi Skema XML IZIN Koleksi Skema XML GRANT (Transact-SQL)