IZIN objek sistem GRANT (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Memberikan izin pada objek sistem seperti prosedur tersimpan sistem, prosedur tersimpan yang diperluas, fungsi, dan tampilan.
Sintaks
GRANT { SELECT | EXECUTE } ON [ sys. ] system_object TO principal
[ ; ]
Argumen
[ sys . ]
Kualifikasi sys hanya diperlukan saat Anda merujuk ke tampilan katalog dan tampilan manajemen dinamis.
system_object
Menentukan objek tempat izin diberikan.
principal
Menentukan prinsipal tempat izin diberikan.
Keterangan
Pernyataan ini dapat digunakan untuk memberikan izin pada prosedur tersimpan tertentu, prosedur tersimpan yang diperluas, fungsi bernilai tabel, fungsi skalar, tampilan, tampilan katalog, tampilan kompatibilitas, tampilan, INFORMATION_SCHEMA
tampilan manajemen dinamis, dan tabel sistem yang diinstal oleh SQL Server. Masing-masing objek sistem ini ada sebagai catatan unik dalam database sumber daya server (mssqlsystemresource). Database sumber daya bersifat baca-saja. Tautan ke objek diekspos sebagai rekaman dalam skema sys setiap database. Izin untuk menjalankan atau memilih objek sistem dapat diberikan, ditolak, dan dicabut.
Memberikan izin untuk menjalankan atau memilih objek tidak selalu menyampaikan semua izin yang diperlukan untuk menggunakan objek. Sebagian besar objek melakukan operasi di mana izin tambahan diperlukan. Misalnya, pengguna yang diberikan EXECUTE
izin sp_addlinkedserver
tidak dapat membuat server tertaut kecuali pengguna juga merupakan anggota peran server tetap sysadmin .
Resolusi nama default menyelesaikan nama prosedur yang tidak memenuhi syarat ke database sumber daya. Oleh karena itu, kualifikasi sys hanya diperlukan saat Anda menentukan tampilan katalog dan tampilan manajemen dinamis.
Memberikan izin pada pemicu dan pada kolom objek sistem tidak didukung.
Izin pada objek sistem dipertahankan selama peningkatan SQL Server.
Anda harus berada dalam master
database untuk memberikan izin, dan prinsipal yang Anda berikan izinnya harus pengguna dalam master
database. Artinya, jika mereka adalah izin tingkat server, Anda tidak dapat memberikannya kepada prinsipal server, hanya prinsipal database.
Objek sistem terlihat dalam tampilan katalog sys.system_objects . Izin pada objek sistem terlihat dalam tampilan katalog sys.database_permissions dalam master
database.
Kueri berikut mengembalikan informasi tentang izin objek sistem:
SELECT *
FROM master.sys.database_permissions AS dp
INNER JOIN sys.system_objects AS so
ON dp.major_id = so.object_id
WHERE dp.class = 1 AND so.parent_object_id = 0;
GO
Izin
Memerlukan izin SERVER KONTROL.
Contoh
J. Memberikan izin SELECT pada tampilan
Contoh berikut memberikan izin masuk Sylvester1
SQL Server untuk memilih tampilan yang mencantumkan login SQL Server. Contoh kemudian memberikan izin tambahan yang diperlukan untuk melihat metadata pada login SQL Server yang tidak dimiliki pengguna.
USE master;
GO
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO
B. Memberikan izin EXECUTE pada prosedur tersimpan yang diperluas
Contoh berikut memberikan EXECUTE
izin ke xp_readmail
Sylvester1
.
USE master;
GO
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO