Jeg er veldig grønn når det gjelder administrasjon av databasetillatelser i SQL Sever.
La oss holde et eksempel enkelt.
Si kontoen «admin» er eieren av skjemaene A, B og C.
Det er en annen konto «minion» som du vil ha full rettighet (oppdater / slett / sett inn / velg / endre) på et hvilket som helst objekt (tabell / visning) opprettet under skjemaene A, B og C.
Er dette mulig? Eller må du utføre en tilskuddserklæring hver gang du legger til en tabell / visning under disse skjemaene? (virker litt dumt for meg).
Svar
Du kan GRANT
skjematillatelser som er effektive for alt eksisterende og alt som vil eksistere i det skjemaet.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Videre til det, hvis du vil nekte tillatelser for en bestemt objekt i det skjemaet, kan du gjøre det.
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Kommentarer
Svar
For å forenkle litt lenger, kan du bruke roller til å utføre jobben du leter etter.
Når du har tildelt tillatelser til rollen, kan du bare legge til brukere i rollen. På denne måten trenger du ikke administrere tillatelser for individuelle brukere. Brukerne arver tillatelser som er gitt til rolle.
Nedenfor er et eksempel for å komme i gang:
-- 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]