GRANT Object Permissions (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Memberikan izin pada tabel, tampilan, fungsi bernilai tabel, prosedur tersimpan, prosedur tersimpan yang diperluas, fungsi skalar, fungsi agregat, antrean layanan, atau sinonim.
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)