Ik “ben erg groen als het gaat om de wereld van het beheer van databasemachtigingen in SQL Server.
Laten we een voorbeeld houden simpel.
Zeg dat account “admin” de eigenaar is van schemas A, B en C.
Er is een ander account “minion” waarvan je de volledige rechten wilt hebben (update / delete / insert / select / alter) op elk object (tabel / view) gemaakt onder schemas A, B en C.
Is dit mogelijk? Of moet u elke keer dat u een tabel / view toevoegt onder deze schemas een subsidieverklaring uitvoeren? (lijkt me een beetje dom).
Antwoord
Je kunt GRANT
schema-machtigingen die effectief zijn voor alles wat bestaat en alles wat zal bestaan in dat schema.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Verder, als u vervolgens machtigingen voor een bepaalde object binnen dat schema, kunt u dit doen.
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Reacties
Answer
Om een beetje verder te vereenvoudigen, kunt u rollen gebruiken om het werk te doen waarnaar u op zoek bent.
Zodra u machtigingen voor de rol, u kunt gewoon gebruikers aan de rol toevoegen, zodat u geen machtigingen voor individuele gebruikers hoeft te beheren. De gebruikers nemen de rechten over die aan de rol zijn toegekend.
Hieronder staat een voorbeeld om u op weg te helpen:
-- 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]