Je « suis très vert en ce qui concerne le monde de la gestion des autorisations de base de données dans SQL Server.
Gardons un exemple simple.
Dites que le compte « admin » est le propriétaire des schémas A, B et C.
Il y a un autre compte « minion » dont vous voulez avoir tous les droits (mettre à jour / supprimer / insert / select / alter) sur nimporte quel objet (table / vue) créé sous les schémas A, B et C.
Est-ce possible? Ou devez-vous exécuter une déclaration doctroi à chaque fois que vous ajoutez une table / vue sous ces schémas? (me semble un peu idiot).
Réponse
Vous pouvez GRANT
autorisations de schéma qui sont effectives pour tout ce qui existe et tout ce qui existera dans ce schéma.
Accorder des autorisations de schéma
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
De plus, si vous souhaitez refuser les autorisations sur un certain objet dans ce schéma, vous pouvez le faire.
Refuser les autorisations dobjet
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Commentaires
Réponse
Pour simplifier un peu plus, vous pouvez utiliser des rôles pour faire le travail que vous recherchez.
Une fois que vous avez attribué droits daccès au rôle, vous pouvez simplement ajouter des utilisateurs au rôle. De cette façon, vous navez pas à gérer les autorisations des utilisateurs individuels. Les utilisateurs héritent des autorisations accordées au rôle.
Voici un exemple pour vous aider à démarrer:
-- 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]