GRANT (SQL Bertransaksi)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

Memberikan izin pada yang dapat diamankan kepada prinsipal. Konsep umumnya adalah memberikan <beberapa izin> PADA <beberapa objek> KEPADA <beberapa pengguna, login, atau grup>. Untuk diskusi umum tentang izin, lihat Izin (Mesin Database).

Article link iconKonvensi Sintaksis T-SQL

Sintaks

-- Syntax for SQL Server and 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 ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse  
  
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 dan 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. Memberikan SEMUA setara dengan memberikan 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.

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

Izin
Adalah nama izin. Pemetaan izin yang valid ke securables dijelaskan dalam subtopik yang tercantum di bawah ini.

kolom
Menentukan nama kolom dalam tabel tempat izin diberikan. Tanda kurung () diperlukan.

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

Securable
Menentukan yang dapat diamankan di mana izin diberikan.

KEPADA prinsipal
Adalah nama prinsipal. Prinsipal yang izinnya diamankan dapat diberikan bervariasi, tergantung pada keamanannya. Lihat subtopik yang tercantum di bawah ini untuk kombinasi yang valid.

OPSI GRANT
Menunjukkan bahwa penerima hibah juga akan diberikan kemampuan untuk memberikan izin yang ditentukan kepada prinsipal lain.

Prinsipal AS
Gunakan klausul utama AS untuk menunjukkan bahwa prinsipal yang dicatat sebagai pemberi 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 GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Sekarang tabel sys.database_permissions akan menunjukkan bahwa grantor_prinicpal_id adalah 15 (Raul) meskipun pernyataan itu benar-benar dijalankan oleh pengguna 13 (Maria).

Menggunakan klausa AS biasanya tidak disarankan kecuali Anda perlu secara eksplisit menentukan rantai izin. Untuk informasi selengkapnya, lihat bagian Ringkasan Algoritma Pemeriksaan Izin izin (Mesin Database).

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

Keterangan

Sintaks lengkap pernyataan GRANT rumit. Diagram sintaks di atas disederhanakan untuk menarik perhatian pada strukturnya. Sintaks lengkap untuk memberikan izin pada securable tertentu dijelaskan dalam artikel yang tercantum di bawah 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 CABUT 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. 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

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.

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

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, klausa AS 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 dapat menjalankan pernyataan GRANT , anggota grup atau peran tertentu harus menggunakan klausul AS untuk secara eksplisit memanggil peran atau keanggotaan grup saat memberikan izin. Contoh berikut menunjukkan bagaimana WITH GRANT OPTION digunakan saat 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 TestMe TO User2;  
-- The following succeeds because User1 invokes the TesterRole membership  
GRANT EXECUTE ON TestMe TO User2 AS TesterRole;  

Bagan Izin SQL Server

Untuk bagan berukuran poster semua izin Mesin Database dalam format pdf, lihat https://aka.ms/sql-permissions-poster.

Izin

Pemberi izin (atau prinsipal yang ditentukan dengan opsi AS) harus memiliki izin itu sendiri dengan GRANT OPTION, atau izin yang lebih tinggi yang menyiratkan izin 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 izin CONTROL pada yang dapat diamankan dapat memberikan izin pada yang dapat diamankan.

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

Contoh

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

Yang dapat diamankan Sintaks GRANT
Peran Aplikasi IZIN Utama Database GRANT (SQL Transact)
Rakitan Izin Perakitan GRANT (SQL Transact)
Kunci Asimetris GRANT Asymmetric Key Permissions (Transact-SQL)
Grup Ketersediaan Izin Grup Ketersediaan GRANT (SQL Transact)
Sertifikat Izin Sertifikat GRANT (SQL Bertransaksi)
Kontrak Izin Broker Layanan GRANT (SQL Bertransaksi)
Database IZIN DATABASE GRANT (SQL Bertransaksi)
Kredensial Cakupan Database GRANT Database Scoped Credential (Transact-SQL)
Titik akhir IZIN TITIK Akhir GRANT (SQL Transact)
Katalog Full-Text GRANT Full-Text Permissions (Transact-SQL)
Full-Text Stoplist GRANT Full-Text Permissions (Transact-SQL)
Fungsi GRANT Object Permissions (Transact-SQL)
Masuk IZIN Utama Server GRANT (SQL Bertransaksi)
Jenis Pesan Izin Broker Layanan GRANT (SQL Bertransaksi)
Objek GRANT Object Permissions (Transact-SQL)
Antrean GRANT Object Permissions (Transact-SQL)
Pengikatan Layanan Jarak Jauh Izin Broker Layanan GRANT (SQL Bertransaksi)
Peran IZIN Utama Database GRANT (SQL Transact)
Rute Izin Broker Layanan GRANT (SQL Bertransaksi)
Skema IZIN Skema GRANT (Transact-SQL)
Daftar Properti Pencarian IZIN Daftar Properti Pencarian GRANT (SQL Transact)
Server IZIN SERVER GRANT (SQL Transact)
Layanan Izin Broker Layanan GRANT (SQL Bertransaksi)
Prosedur Tersimpan GRANT Object Permissions (Transact-SQL)
Kunci Konten GRANT Symmetric Key Permissions (Transact-SQL)
Sinonim GRANT Object Permissions (Transact-SQL)
Objek sistem GRANT System Object Permissions (Transact-SQL)
Tabel GRANT Object Permissions (Transact-SQL)
Jenis Izin Jenis GRANT (SQL Transact)
Pengguna IZIN Utama Database GRANT (SQL Transact)
Tampilan GRANT Object Permissions (Transact-SQL)
Koleksi Skema XML IZIN Pengumpulan Skema XML GRANT (Transact-SQL)

Lihat juga