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?
GRANT
untuk memberikan izin, DENY
untuk menolak izin, dan REVOKE
untuk menghapus GRANT
atau DENY
. Tanpa a GRANT
atau DENY
pengguna dapat mewarisi izin, katakanlah dari mendapatkan akses ke prosedur yang tersimpan.
DENY DELETE, INSERT, UPDATE
menggunakan database atau skema, saya yakin itu hanya akan memengaruhi tabel dan tampilan.