Saya mengalami masalah saat mengatur VIEW DEFINITION
izin di tingkat skema untuk salah satu pengguna saya. Saya telah membuat skema TestSchema
dan menambahkan beberapa tabel. Pengguna saat ini memiliki izin diatur untuk mengakses & memodifikasi tabel ( SELECT
, UPDATE
, DELETE
, dll) melalui dbo_datareader
dan dbo_datawriter
peran. Namun, mereka tidak bisa melihat tabel di penjelajah objek SSMS.
Saya sudah mencoba memberikan izin untuk melihat definisi:
grant view definition on SCHEMA :: [TestSchema] to [User]
Itu tidak berhasil. Saya mencoba mengatur izin tingkat meja:
grant view definition on [TestSchema].[NewTable] to [User]
Itu juga tidak berhasil. Kemudian saya mencoba hanya hibah selimut:
grant view definition to [User]
Dan yang melakukan pekerjaan; mereka sekarang dapat melihat TestSchema
, serta skema lain yang tidak seharusnya mereka akses.
Tujuan saya di sini adalah untuk memungkinkan pengguna melihat semua tabel dalam skema yang diberikan. Bagaimana saya mencapainya? Jika saya harus bisa melakukan hal ini secara default, apa hak akses yang harus saya cari di untuk menemukan mengapa saya tidak bisa?
Jawaban:
Jawaban singkat: Jangan gunakan
db_datareader
ataudb_datawriter
atau menolak mereka. Mereka hanya untuk kompatibilitas mundur. Menggunakannya akan menyebabkan masalah seperti yang Anda hadapi.Jika Anda ingin memberikan izin utama Alice SELECT, INSERT, UPDATE dan DELETE ke semua objek bernilai tabel dalam skema Penjualan kemudian gunakan yang berikut ini.
Jika Anda ingin memberikan izin utama Alice SELECT, INSERT, UPDATE dan DELETE ke semua objek bernilai tabel di semua skema, gunakan yang berikut ini.
Visibilitas metadata kemudian akan bekerja dengan benar.
sumber
Lihatlah para pelaku izin lainnya mungkin ada penolakan di suatu tempat yang menyebabkan masalah. Ingatlah bahwa penolakan akan selalu berlaku di atas hibah. Dan karena itu bukan servr Anda, mungkin ada sesuatu di akun yang telah disiapkan departemen TI.
Gunakan sesuatu seperti ini untuk tingkat server:
Dan sesuatu seperti ini di tingkat basis data
sumber
Ini terjadi pada saya ketika saya memutakhirkan SQL Server kami dari 2008R2 ke 2014. db_datareader atau db_datawriter atau setara penyangkalan mereka bekerja dengan baik di 2008R2 tetapi tidak bekerja di 2014.
Contoh untuk memberikan izin dalam SQL Server 2014
Jika Anda ingin memberi izin kepada pengguna Alice SELECT, INSERT, UPDATE dan DELETE ke semua objek bernilai tabel dalam skema Penjualan, gunakan yang berikut ini.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: Sales TO Alice; Jika Anda ingin memberikan izin utama Alice SELECT, INSERT, UPDATE dan DELETE ke semua objek bernilai tabel di semua skema, gunakan yang berikut ini.
GRANT SELECT, INSERT, UPDATE, DELETE TO Alice; Visibilitas metadata kemudian akan bekerja dengan benar.
sumber