Saya ingin mengatur pengguna "membaca" pada contoh SQL Server 2012 saya. Saya ingin memberinya hak untuk menjalankan prosedur tersimpan, atau fungsi, atau pernyataan SQL langsung, yang mengambil data dari semua tabel dan tampilan, tetapi tidak untuk memperbarui atau memasukkan (yaitu membaca apa pun dan tidak menulis apa pun).
Bisakah saya mengatur ini tanpa secara khusus memberikan hak untuk setiap fungsi atau prosedur tersimpan dengan nama, tetapi memberinya eksekusi tepat pada fungsi atau prosedur tersimpan, hanya menghilangkan hak untuk mengubah tabel?
Adakah yang akan berubah jika saya menjalankan SQL Server 2008?
Klarifikasi dan tambahan:
- Jika prosedur tersimpan mengubah data, pengguna harus menerima pesan kesalahan (baik menolak modifikasi atau menolak akses ke prosedur tersimpan sepenuhnya).
- Jika solusi potensial melibatkan penolakan izin, bisakah saya tidak memberikan izin tertentu alih-alih menolak?
- Dapatkah penolakan diterapkan pada semua tabel, tampilan dll. (Ada sekarang dan di masa depan) dalam database dalam satu pernyataan?
GRANTuntuk memberikan izin, DENYuntuk menolak izin, dan REVOKEuntuk menghapus GRANTatau DENY. Tanpa a GRANTatau DENYpengguna dapat mewarisi izin, katakanlah dari mendapatkan akses ke prosedur yang tersimpan.
DENY DELETE, INSERT, UPDATEmenggunakan database atau skema, saya yakin itu hanya akan memengaruhi tabel dan tampilan.