GRANT Object Permissions (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

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

Sintaks

GRANT <permission> [ ,...n ] ON   
    [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]  
    TO <database_principal> [ ,...n ]   
    [ WITH GRANT OPTION ]  
    [ AS <database_principal> ]  
  
<permission> ::=  
    ALL [ PRIVILEGES ] | permission [ ( column [ ,...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 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

Izin
Menentukan izin yang dapat diberikan pada objek yang berisi skema. Untuk daftar izin, lihat bagian Keterangan nanti dalam topik ini.

SEMUA
Memberikan SEMUA tidak memberikan semua izin yang mungkin. Memberikan ALL setara dengan memberikan semua izin ANSI-92 yang berlaku untuk objek yang ditentukan. Arti DARI 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.

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

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

Perhatian

DENY 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 yang izinnya 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 izin ALTER dan REFERENCE dalam beberapa kasus dapat memungkinkan penerima izin untuk melihat data atau menjalankan fungsi yang tidak sah. Misalnya: Pengguna dengan izin UBAH pada tabel dan izin REFERENSI pada fungsi dapat membuat kolom komputasi melalui fungsi dan menjalankannya. Dalam hal ini pengguna juga memerlukan izin SELECT 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 terkandung oleh skema yang merupakan induknya dalam hierarki izin. Izin yang 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
TERIMA CONTROL CONTROL
REFERENCES CONTROL REFERENCES
SELECT TERIMA SELECT
AMBIL KEPEMILIKAN CONTROL CONTROL
UPDATE CONTROL UPDATE
LIHAT PELACAKAN PERUBAHAN CONTROL LIHAT PELACAKAN PERUBAHAN
MELIHAT DEFINISI CONTROL MELIHAT DEFINISI

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 Anda menggunakan opsi AS, persyaratan tambahan berikut berlaku.

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

Contoh

A. Memberikan izin SELECT pada tabel

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

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 AdventureWorks2012;   
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo  
    TO Recruiting11;  
GO   

C. Memberikan izin REFERENSI pada tampilan dengan GRANT OPTION

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

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 AdventureWorks2012 database.

GRANT SELECT ON Person.Address TO RosaQdM;  
GO  

E. Memberikan izin SELECT pada tabel ke akun domain

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

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

F. Memberikan izin EXECUTE pada prosedur ke peran

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

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

Lihat juga

Deny Object Permissions (Transact-SQL)
MENCABUT Izin Objek (Transact-SQL)
Tampilan Katalog Objek (Transact-SQL)
Izin (Mesin Database)
Prinsipal (Mesin Database)
Securable
sys.fn_builtin_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)