Yalnızca bazı veritabanlarını oluşturmak, geri yüklemek, silmek için SQL Server izinleri


17

MS SQL Server 2008 R2'de, DBCC CHECKDB oluşturabilen, geri yükleyebilen ve daha sonra veritabanlarını bırakabilen kullanıcıya sahip olmam gerekir. Ancak sunucudaki belirli veritabanlarına erişememesi veya silmemesi gerekir (güvenlik nedenleri). Bu kurulum mümkün mü?


Burada birkaç ipucu alabilirsiniz: toadworld.com/platforms/sql-server/w/wiki/…
dezso

Yanıtlar:


27

Evet, birkaç izin ile mümkündür.

İlk olarak - veritabanı oluşturmak için - Sunucu düzeyinde izin vermeniz gerekir Create Any Database. Bu izin, tam olarak göründüğü şeyi yapar - bir veritabanı oluşturma gücü. Bu sabit sunucu rolü herhangi bir veritabanında değiştirme / silme izinleri verdiğinden, bu girişe dbcreator sabit sunucu rolü vermiyor unutmayın . oturum açmanın yalnızca sahip oldukları veritabanları üzerinde bu güce sahip olmasına izin verir. Bu aynı zamanda geri yükleme yeteneği de verecektir.Create Any Database

(Yani SADECE "Herhangi Bir Veritabanı Oluştur" yaparak - yeni bir veritabanı oluşturma yeteneği veriyoruz, ancak dbcreator sabit sunucu rolünü kullanarak alacağınız HERHANGİ BİR veritabanını Bırakma veya Değiştirme yeteneğinden kaçınıyorsunuz )

Bu "Herhangi Bir Veritabanı Oluştur" izni vermek için -

use [master]
GO
GRANT CREATE ANY DATABASE TO [LoginName]
GO

DBCC CHECKDBVeritabanlarını çalıştırma ve bırakma yeteneği için - db_owner sabit veritabanı rolü yeterlidir. Bu, talep ettiğiniz her şeyi verir. Lütfen Dikkat: Bu kullanıcıya ayrıca seçme, silme, kısaltma, güncelleme ve ekleme özelliği de verilmektedir db_owner. Bunu sysadminbir veritabanı içinde düşünmeyi seviyorum .

Bu izni yalnızca bu yeteneğe sahip olmayı düşündüğünüz veritabanına uygulayacaksınız. Bu, kullanıcının hangi veritabanlarını bırakabileceğini, geri yükleyebileceğini veya kontrol edebileceğini kontrol etmenizi sağlar. Kullanıcıya bu izinleri vermediğiniz tüm veritabanları, bu işlemleri gerçekleştiren bu kullanıcıdan güvenli olacaktır.

Bunu yapmak için önce giriş bilgisini bir veritabanı kullanıcısıyla eşlersiniz:

USE [DatabaseName]
GO
CREATE USER [UserName] FOR LOGIN [LoginName] 
GO

Ve sonra bu db_ownerrolü role ekleyin (SQL Server 2012 ve sonraki sürümlerde çalışır):

ALTER ROLE [db_owner] ADD MEMBER [frank]
GO

SQL Server 2008 için, aşağıda belirtildiği gibi yorumcu olarak rol üyesi eklemek için sistem saklı yordamını kullanmanız gerekir:

EXEC sp_addrolemember 'db_owner', 'frank';

Tüm bunları GUI aracılığıyla da yapabilirsiniz. SSMS içindeki güvenlik klasörü üzerinden örnek düzeyinde yapacağınız giriş bilgileri: Login -> Properties -> Securables öğelerine sağ tıklayın. Veritabanı düzeyinde, bunu veritabanı düzeyindeki güvenlik klasörü üzerinden yaparsınız: sağ tıklayın ve yeni kullanıcı seçin -> sunucu oturum açma listenizden kullanıcı için istediğiniz girişi seçin / veritabanı kullanıcısına bir ad verin -> üyelik sekmesini seçmek için üyelik sekmesine gidin.

SQL Server'ın yardım sistemi Books Online, çoğu izin sorusu için de harika bir kaynaktır - diğer izinleri atamanız gerektiğini belirlerseniz. İzin vermek istediğiniz T-SQL komutunu aramanız yeterlidir ve makalede bu eylemi yapmak için hangi izinlerin gerekli olduğunu bildiren genellikle bu komut için bir İzinler bölümü bulunur. Bir örnek için DBCC CHECKDB makalesine bakabilirsiniz - makalenin aşağı yukarı 7/8'i izinler bölümüdür.


3
Ben sadece ALTER ROLE [db_owner] ADD MEMBER [frank]SQL Server 2012 çalışır çalışır eklemek istiyorum . SQL Server 2008 kullanıyorsanız bir SP ile gitmek gerekir: EXEC sp_addrolemember 'db_owner', 'frank';( Burada ve burada ref )
superjos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.