Jeg er meget grøn når det kommer til databaseadministrationsverdenen i SQL Sever.
Lad os holde et eksempel simpelt.
Sig konto “admin” er ejeren af skemaerne A, B og C.
Der er en anden konto “minion”, som du vil have fulde rettigheder (opdater / slet / indsæt / vælg / ændr) på ethvert objekt (tabel / visning) oprettet under skemaer A, B og C.
Er dette muligt? Eller skal du udføre en tilskudserklæring hver gang du tilføjer en tabel / visning under disse skemaer? (virker lidt fjollet for mig).
Svar
Du kan GRANT
skematilladelser, der er effektive for alt eksisterende og alt, hvad der vil eksistere i det skema.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Yderligere til det, hvis du vil nægte tilladelser til en bestemt objekt inden for dette skema, kan du gøre.
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Kommentarer
Svar
For at forenkle lidt længere kan du bruge roller til at udføre det job, du leder efter.
Når du har tildelt tilladelser til rollen, kan du bare tilføje brugere til rollen. På denne måde behøver du ikke administrere tilladelser for individuelle brugere. Brugerne arver tilladelser til rollen.
Nedenfor er et eksempel for at 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]