Jestem bardzo zielony, jeśli chodzi o zarządzanie uprawnieniami do baz danych na serwerze SQL.
Weźmy przykład proste.
Powiedz, że konto „admin” jest właścicielem schematów A, B i C.
Jest jeszcze jedno konto „minion”, do którego chcesz mieć pełne prawa (aktualizacja / usuwanie / insert / select / alter) na jakimkolwiek obiekcie (tabeli / widoku) utworzonym w ramach schematów A, B i C.
Czy to możliwe? A może za każdym razem, gdy dodajesz tabelę / widok pod tymi schematami, musisz wykonywać oświadczenie o przyznaniu grantu? (wydaje mi się to trochę głupie).
Odpowiedź
Możesz GRANT
uprawnienia schematu, które mają zastosowanie do wszystkiego, co istnieje i wszystkiego, co będzie istniało w tym schemacie.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Poza tym, jeśli chcesz następnie odmówić uprawnień określonym obiektu w ramach tego schematu, możesz to zrobić.
Odmawianie uprawnień do obiektu
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Komentarze
Odpowiedź
Aby jeszcze bardziej uprościć, możesz używać ról do wykonywania pracy, której szukasz.
Po przypisaniu uprawnienia do roli, możesz po prostu dodać użytkowników do roli. Dzięki temu nie musisz zarządzać uprawnieniami dla poszczególnych użytkowników. Użytkownicy dziedziczą uprawnienia przyznane roli.
Poniżej znajduje się przykład ułatwiający rozpoczęcie pracy:
-- 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]