IZIN objek GRANT (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

Memberikan izin pada tabel, tampilan, fungsi bernilai tabel, prosedur tersimpan, prosedur tersimpan yang diperluas, fungsi skalar, fungsi agregat, antrean layanan, atau sinonim.

Konvensi sintaks transact-SQL

Sintaksis

GRANT <permission> [ ,...n ] ON   
    [ OBJECT :: ][ schema_name ]. object_name [ ( column_name [ ,...n ] ) ]  
    TO <database_principal> [ ,...n ]   
    [ WITH GRANT OPTION ]  
    [ AS <database_principal> ]  
  
<permission> ::=  
    ALL [ PRIVILEGES ] | permission [ ( column_name [ ,...n ] ) ]  
  
<database_principal> ::=   
        Database_user   
    | Database_role   
    | Application_role   
    | Database_user_mapped_to_Windows_User   
    | Database_user_mapped_to_Windows_Group   
    | Database_user_mapped_to_certificate   
    | Database_user_mapped_to_asymmetric_key   
    | Database_user_with_no_login  

Catatan

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

Argumen

Izin

Menentukan izin yang dapat diberikan pada objek yang berisi skema. Untuk daftar izin, lihat Komentar.

SEMUA

Memberikan SEMUA tidak memberikan semua izin yang mungkin. Memberikan SEMUA setara dengan memberikan semua izin ANSI-92 yang berlaku untuk objek yang ditentukan. Arti SEMUA bervariasi sebagai berikut:

  • Izin fungsi skalar: EXECUTE, REFERENCES.
  • Izin fungsi bernilai tabel: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • Izin prosedur tersimpan: EXECUTE.
  • Izin tabel: HAPUS, SISIPKAN, REFERENSI, PILIH, PERBARUI.
  • Lihat izin: HAPUS, SISIPKAN, REFERENSI, PILIH, PERBARUI.

Perhatian

Izin SEMUA tidak digunakan lagi dan dipertahankan hanya untuk kompatibilitas.

HAK ISTIMEWA

Disertakan untuk kepatuhan ANSI-92. Tidak mengubah perilaku ALL.

column_name

Menentukan nama kolom dalam tabel, tampilan, atau fungsi bernilai tabel tempat izin diberikan. Tanda kurung ( ) diperlukan. Hanya izin SELECT, REFERENCES, UPDATE, dan UNMASK yang dapat diberikan pada kolom. column_name dapat ditentukan dalam klausa izin atau setelah nama yang dapat diamankan.

Perhatian

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

ON [ OBJECT :: ] [ schema_name ] . object_name

Menentukan objek tempat izin diberikan. Frasa OBJECT bersifat opsional jika schema_name ditentukan. Jika frasa OBJECT digunakan, kualifikasi cakupan (::) diperlukan. Jika schema_name tidak ditentukan, skema default akan digunakan. Jika schema_name ditentukan, kualifikasi cakupan skema (.) diperlukan.

UNTUK <database_principal>

Menentukan prinsipal tempat izin diberikan.

DENGAN OPSI GRANT

Menunjukkan bahwa prinsipal juga akan diberikan kemampuan untuk memberikan izin yang ditentukan kepada prinsipal lain.

AS <database_principal>

Menentukan prinsipal dari mana prinsipal yang menjalankan kueri ini memperoleh haknya untuk memberikan izin.

Database_user
Menentukan pengguna database.

Database_role
Menentukan peran database.

Application_role
Menentukan peran aplikasi.

Database_user_mapped_to_Windows_User
Menentukan pengguna database yang dipetakan ke pengguna Windows.

Database_user_mapped_to_Windows_Group
Menentukan pengguna database yang dipetakan ke grup Windows.

Database_user_mapped_to_certificate
Menentukan pengguna database yang dipetakan ke sertifikat.

Database_user_mapped_to_asymmetric_key
Menentukan pengguna database yang dipetakan ke kunci asimetris.

Database_user_with_no_login
Menentukan pengguna database tanpa prinsipal tingkat server yang sesuai.

Keterangan

Penting

Kombinasi ALTER izin dan REFERENCE dalam beberapa kasus dapat memungkinkan penerima untuk melihat data atau menjalankan fungsi yang tidak sah. Misalnya: Pengguna dengan ALTER izin pada tabel dan REFERENCE izin pada fungsi dapat membuat kolom komputasi melalui fungsi dan menjalankannya. Dalam hal ini pengguna juga akan memerlukan SELECT izin pada kolom komputasi.

Informasi tentang objek terlihat dalam berbagai tampilan katalog. Untuk informasi selengkapnya, lihat Tampilan Katalog Objek (Transact-SQL).

Objek adalah tingkat skema yang dapat diamankan yang dimuat oleh skema yang merupakan induknya dalam hierarki izin. Izin paling spesifik dan terbatas yang dapat diberikan pada objek tercantum dalam tabel berikut, bersama dengan izin yang lebih umum yang menyertakannya berdasarkan implikasi.

Izin objek Tersirat oleh izin objek Tersirat oleh izin skema
ALTER CONTROL ALTER
CONTROL CONTROL CONTROL
DELETE CONTROL DELETE
EXECUTE CONTROL EXECUTE
INSERT CONTROL INSERT
RECEIVE CONTROL CONTROL
REFERENCES CONTROL REFERENCES
SELECT RECEIVE SELECT
TAKE OWNERSHIP CONTROL CONTROL
UPDATE CONTROL UPDATE
VIEW CHANGE TRACKING CONTROL VIEW CHANGE TRACKING
VIEW DEFINITION CONTROL VIEW DEFINITION

Izin

Pemberi hibah (atau prinsipal yang ditentukan dengan opsi AS) harus memiliki izin itu sendiri dengan GRANT OPTION, atau izin yang lebih tinggi yang menyiratkan izin yang diberikan.

Jika Anda menggunakan opsi AS, persyaratan tambahan berikut berlaku.

AS Izin tambahan diperlukan
Pengguna database IMPERSONATE izin pada pengguna, keanggotaan dalam db_securityadmin peran database tetap, keanggotaan dalam db_owner peran database tetap, atau keanggotaan dalam sysadmin peran server tetap.
Pengguna database dipetakan ke login Windows IMPERSONATE izin pada pengguna, keanggotaan dalam db_securityadmin peran database tetap, keanggotaan dalam db_owner peran database tetap, atau keanggotaan dalam sysadmin peran server tetap.
Pengguna database dipetakan ke Grup Windows Keanggotaan dalam grup Windows, keanggotaan dalam db_securityadmin peran database tetap, keanggotaan dalam db_owner peran database tetap, atau keanggotaan dalam sysadmin peran server tetap.
Pengguna database dipetakan ke sertifikat Keanggotaan dalam db_securityadmin peran database tetap, keanggotaan dalam db_owner peran database tetap, atau keanggotaan dalam sysadmin peran server tetap.
Pengguna database dipetakan ke kunci asimetris Keanggotaan dalam db_securityadmin peran database tetap, keanggotaan dalam db_owner peran database tetap, atau keanggotaan dalam sysadmin peran server tetap.
Pengguna database tidak dipetakan ke perwakilan server mana pun IMPERSONATE izin pada pengguna, keanggotaan dalam db_securityadmin peran database tetap, keanggotaan dalam db_owner peran database tetap, atau keanggotaan dalam sysadmin peran server tetap.
Peran database ALTER izin pada peran, keanggotaan dalam db_securityadmin peran database tetap, keanggotaan dalam db_owner peran database tetap, atau keanggotaan dalam sysadmin peran server tetap.
Peran aplikasi ALTER izin pada peran, keanggotaan dalam db_securityadmin peran database tetap, keanggotaan dalam db_owner peran database tetap, atau keanggotaan dalam sysadmin peran server tetap.

Contoh

J. Memberikan izin SELECT pada tabel

Contoh berikut memberikan SELECT izin kepada pengguna RosaQdM pada tabel Person.Address dalam AdventureWorks2022 database.

Contoh seperti yang ditulis ini tidak berfungsi di Microsoft Fabric karena menggunakan pengguna untuk login terautentikasi SQL, tetapi contoh yang sama ini akan berfungsi untuk pengguna Microsoft Entra ID Fabric, misalnya, RosaQdM@contoso.com.

GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;  
GO  

B. Memberikan izin EXECUTE pada prosedur tersimpan

Contoh berikut memberikan EXECUTE izin pada prosedur HumanResources.uspUpdateEmployeeHireInfo tersimpan ke peran aplikasi yang disebut Recruiting11.

USE AdventureWorks2022;   
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo  
    TO Recruiting11;  
GO   

C. Memberikan izin REFERENCES pada tampilan dengan GRANT OPTION

Contoh berikut memberikan REFERENCES izin pada kolom BusinessEntityID dalam tampilan HumanResources.vEmployee kepada pengguna Wanida dengan GRANT OPTION.

Contoh seperti yang ditulis ini tidak berfungsi di Microsoft Fabric karena menggunakan pengguna untuk login terautentikasi SQL, tetapi contoh yang sama ini akan berfungsi untuk pengguna Microsoft Entra ID Fabric, misalnya, Wanida@contoso.com.

GRANT REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee   
    TO Wanida WITH GRANT OPTION;  
GO  

D. Memberikan izin SELECT pada tabel tanpa menggunakan frasa OBJECT

Contoh berikut memberikan SELECT izin kepada pengguna RosaQdM pada tabel Person.Address dalam AdventureWorks2022 database.

Contoh seperti yang ditulis ini tidak berfungsi di Microsoft Fabric karena menggunakan pengguna untuk login terautentikasi SQL, tetapi contoh yang sama ini akan berfungsi untuk pengguna Microsoft Entra ID Fabric, misalnya, RosaQdM@contoso.com.

GRANT SELECT ON Person.Address TO RosaQdM;  
GO  

E. Memberikan izin SELECT pada tabel ke akun domain

Contoh berikut memberikan SELECT izin kepada pengguna AdventureWorks2022\RosaQdM pada tabel Person.Address dalam AdventureWorks2022 database.

Contoh seperti yang ditulis ini tidak berfungsi di Microsoft Fabric karena menggunakan akun domain, tetapi contoh yang sama ini akan berfungsi untuk pengguna Microsoft Entra ID Fabric, misalnya, RosaQdM@contoso.com.

GRANT SELECT ON Person.Address TO [AdventureWorks2022\RosaQdM];  
GO  

F. Memberikan izin EXECUTE pada prosedur ke peran

Contoh berikut membuat peran lalu memberikan EXECUTE izin ke peran tentang prosedur uspGetBillOfMaterials dalam AdventureWorks2022 database.

CREATE ROLE newrole ;  
GRANT EXECUTE ON dbo.uspGetBillOfMaterials TO newrole ;  
GO  

G. Memberikan izin UNMASK pada kolom

Contoh berikut memberikan UNMASK izin, bagian dari Masking data dinamis, untuk kolom email dalam tabel Data.Membership kepada pengguna OutreachCoordinator.

Masking data dinamis saat ini tidak didukung di Microsoft Fabric.

GRANT UNMASK ON OBJECT::Data.Membership (email) to OutreachCoordinator;
GO