Sì, è possibile tramite un paio di autorizzazioni.
Innanzitutto, per creare un database , è necessario concedere l'autorizzazione a livello di server Create Any Database
. Questa autorizzazione fa proprio quello che sembra - il potere di creare un database. Si noti che questo non sta assegnando il ruolo predefinito del server dbcreator all'accesso, poiché quel ruolo predefinito del server fornisce autorizzazioni di modifica / eliminazione su qualsiasi database. Create Any Database
consente al login di avere quel potere solo sui database di loro proprietà. Ciò darà anche la possibilità di ripristinare.
(Così facendo SOLO "Crea qualsiasi database" - stai dando la possibilità di creare un nuovo database, ma evitando la possibilità di eliminare o modificare QUALUNQUE database che potresti ottenere usando il ruolo predefinito del server dbcreator)
Per concedere questa autorizzazione "Crea qualsiasi database" -
use [master]
GO
GRANT CREATE ANY DATABASE TO [LoginName]
GO
Per la possibilità di eseguire DBCC CHECKDB
e eliminare database : il ruolo predefinito del database db_owner è sufficiente. Questo garantisce tutto ciò che stai richiedendo. Nota: stai anche concedendo a questo utente la possibilità di selezionare, eliminare, troncare, aggiornare e inserire con db_owner
. Mi piace pensarlo come sysadmin
all'interno di un database.
Applicherai questa autorizzazione solo al database su cui intendi avere questa capacità. Ciò ti consentirà di controllare su quali database l'utente può rilasciare, ripristinare o archiviare il database. Tutti i database su cui non hai concesso queste autorizzazioni all'utente saranno al sicuro da questo utente che esegue queste azioni
Per fare ciò, devi prima mappare l'accesso a un utente del database:
USE [DatabaseName]
GO
CREATE USER [UserName] FOR LOGIN [LoginName]
GO
E quindi aggiungi quell'utente al db_owner
ruolo (Funziona in SQL Server 2012 e versioni successive):
ALTER ROLE [db_owner] ADD MEMBER [frank]
GO
Per SQL Server 2008 dovresti usare la procedura memorizzata nel sistema per aggiungere un membro del ruolo come un commentatore sotto indicato giustamente:
EXEC sp_addrolemember 'db_owner', 'frank';
Puoi anche fare tutto questo tramite la GUI. Le informazioni di accesso che faresti tramite la cartella di sicurezza in SSMS a livello di istanza: fai clic con il tasto destro del mouse su login -> Proprietà -> Titoli. Per il livello del database, lo faresti tramite la cartella di sicurezza a livello del database: fai clic con il pulsante destro del mouse e seleziona il nuovo utente -> scegli il login che desideri all'utente dal tuo elenco di accessi al server / dai un nome all'utente del database -> vai a la scheda appartenenza per selezionare l'appartenenza al ruolo.
Il sistema di aiuto di SQL Server, Books Online, è una risorsa fantastica anche per la maggior parte delle domande relative alle autorizzazioni, se si determina che è necessario assegnare altre autorizzazioni. Fai semplicemente una ricerca per il comando T-SQL a cui desideri concedere le autorizzazioni e in genere c'è una sezione Autorizzazioni per quel comando nell'articolo che ti consente di sapere quali autorizzazioni sono necessarie per eseguire questa azione. Puoi guardare l'articolo per DBCC CHECKDB per un esempio - circa 7/8 del modo in cui l'articolo è la sezione autorizzazioni.