Pada MS SQL Server 2008 R2, saya harus memiliki pengguna yang dapat membuat, mengembalikan, DBCC CHECKDB dan kemudian drop database. Tetapi ia tidak boleh dapat mengakses atau menghapus database tertentu di server (alasan keamanan). Apakah pengaturan ini memungkinkan?
sql-server
sql-server-2008
Cicik
sumber
sumber
Jawaban:
Ya itu dimungkinkan melalui izin pasangan.
Pertama - untuk membuat database - Anda harus memberikan izin tingkat server
Create Any Database
. Izin ini tidak seperti apa kedengarannya - kekuatan untuk membuat database. Catatan ini tidak memberikan peran server tetap dari dbcreator untuk login, karena peran server tetap tersebut memberikan izin perubahan / hapus pada basis data apa pun.Create Any Database
memungkinkan login untuk memiliki kekuasaan atas database yang mereka miliki, hanya. Ini juga akan memberikan kemampuan untuk memulihkan.(Jadi dengan melakukan "Buat Basis Data Apa Saja " SAJA - Anda memberikan kemampuan untuk membuat basis data baru, tetapi menghindari kemampuan untuk Menjatuhkan atau Mengubah Basis Data APAPUN yang akan Anda peroleh dengan menggunakan peran server tetap dbcreator)
Untuk memberikan izin "Buat Database Apa Pun" -
Untuk kemampuan menjalankan
DBCC CHECKDB
dan menjatuhkan basis data - peran basis data tetap db_owner sudah cukup. Ini memberikan semua yang Anda minta. Harap Catatan: Anda juga memberi pengguna ini kemampuan untuk memilih, menghapus, memotong, memperbarui dan menyisipkandb_owner
. Saya suka menganggap ini sebagaisysadmin
dalam database.Anda hanya akan menerapkan izin ini ke basis data yang Anda inginkan. Ini akan memungkinkan Anda untuk mengontrol basis data mana yang dapat dijatuhkan, dikembalikan, atau dicentang oleh pengguna. Basis data apa pun yang Anda belum memberikan izin kepada pengguna ini akan aman dari pengguna ini yang melakukan tindakan ini
Untuk melakukan ini, pertama-tama Anda akan memetakan login ke pengguna basis data:
Dan kemudian tambahkan pengguna itu ke
db_owner
peran (Bekerja di SQL Server 2012 dan seterusnya):Untuk SQL Server 2008 Anda harus menggunakan prosedur tersimpan sistem untuk menambahkan anggota peran sebagai komentator di bawah ini dengan tepat ditunjukkan:
Anda juga dapat melakukan semua ini melalui GUI. Informasi login yang akan Anda lakukan melalui folder keamanan di SSMS di tingkat instance: Klik kanan pada login -> Properties -> Securables. Untuk tingkat basis data, Anda akan melakukannya melalui folder keamanan di tingkat basis data: klik kanan dan pilih pengguna baru -> pilih login yang Anda ingin pengguna dari daftar login server Anda / beri nama pengguna database itu nama -> buka tab keanggotaan untuk memilih peran keanggotaan.
Sistem bantuan SQL Server, Books Online, adalah sumber yang fantastis untuk sebagian besar pertanyaan perizinan juga - jika Anda menentukan Anda perlu menetapkan izin lainnya. Cukup lakukan pencarian untuk perintah T-SQL yang ingin Anda beri izin dan biasanya ada bagian Izin untuk perintah itu di artikel yang memberi tahu Anda izin apa yang diperlukan untuk melakukan tindakan ini. Anda dapat melihat artikel untuk DBCC CHECKDB untuk contoh - sekitar 7/8 dari jalan artikel adalah bagian izin.
sumber
ALTER ROLE [db_owner] ADD MEMBER [frank]
berfungsi hanya dari SQL Server 2012. Jika Anda menggunakan SQL Server 2008 kita harus menggunakan SP:EXEC sp_addrolemember 'db_owner', 'frank';
(Ref di sini dan di sini )