Apa yang diizinkan peran db_owner

15

Saya telah mencoba memecahkan masalah login yang tidak dapat melihat tabel tertentu dalam database SQL Server 2012. Dalam melakukan hal itu saya merasa saya tidak begitu mengerti apa yang db_ownermemungkinkan keanggotaan dalam peran itu. Saya bisa memahami peran lain seperti db_datareader and db_datawritertapi saya tetap bingung apa yang db_ownermemungkinkan.

cacing web
sumber

Jawaban:

15

Silakan lihat referensi pada BOL untuk Peran Level-Database :

db_owner

Anggota peran basis data tetap db_owner dapat melakukan semua aktivitas konfigurasi dan pemeliharaan pada basis data, dan juga dapat menjatuhkan basis data .

Cara termudah untuk melihat semua izin adalah menggunakan sys.fn_my_permissions()fungsi. Pertama, verifikasi bahwa Anda adalah anggota db_owner:

select
    rol.name
from sys.database_principals mem
inner join sys.database_role_members drm
on drm.member_principal_id = mem.principal_id
inner join sys.database_principals rol
on drm.role_principal_id = rol.principal_id
where mem.principal_id = user_id();

Sekarang daftarkan semua izin basis data yang efektif:

select *
from sys.fn_my_permissions(null, 'database');

Itu harus cukup granular untuk keperluan Anda. Sesuatu yang perlu diperhatikan, sys.fn_my_permissions()mengembalikan izin efektif , jadi anggap itu sebagai agregasi.

Thomas Stringer
sumber
Apakah itu berarti bahwa pengguna yang memiliki db_ownerkeanggotaan secara default memiliki izin yang sama dengan db_readerdan db_writer?
webworm
5
Seorang anggota db_ownerperan database tetap akan memiliki SELECT, INSERT, UPDATE, dan DELETEhak akses pada database. Di antara banyak izin lainnya, tapi ya, itu benar.
Thomas Stringer