Sono molto verde quando si tratta del mondo della gestione dei permessi del database in SQL Server.
Facciamo un esempio semplice.
Supponi che laccount “admin” sia il proprietario degli schemi A, B e C.
Cè un altro account “minion” di cui vuoi avere pieni diritti (aggiorna / elimina / inserisci / seleziona / altera) su qualsiasi oggetto (tabella / vista) creato negli schemi A, B e C.
È possibile? O devi eseguire una dichiarazione di concessione ogni volta che aggiungi una tabella / vista sotto questi schemi? (mi sembra un po sciocco).
Risposta
Puoi GRANT
autorizzazioni dello schema valide per tutto ciò che esiste e per tutto ciò che esisterà in quello schema.
Concedi i permessi dello schema
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Inoltre, se desideri negare i permessi su un determinato oggetto allinterno di quello schema, puoi farlo.
Negare le autorizzazioni per gli oggetti
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Commenti
Risposta
Per semplificare ulteriormente, puoi utilizzare i ruoli per svolgere il lavoro che stai cercando.
Una volta assegnato autorizzazioni al ruolo, puoi semplicemente aggiungere utenti al ruolo, in questo modo non devi gestire le autorizzazioni per i singoli utenti. Gli utenti ereditano le autorizzazioni concesse al ruolo.
Di seguito è riportato un esempio per iniziare:
-- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector
.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]