Utwórz rolę bazy danych, aby umożliwić dostęp do odczytu do wszystkich tabel; dostęp do zapisu do niektórych


9

Mamy bazę danych z ponad 1000 tabel. Muszę utworzyć rolę, która pozwala tylko na odczyt na wszystkich tabelach, a także dostęp do zapisu na dwóch określonych tabelach.

Bałam się rolami bazy danych, ale ilekroć szedłem, aby dodać tabele, musiałem ręcznie wybrać wszystkie 1000 ... czy jest na to lepszy sposób?


To może być najprostszy sposób ... Czy istnieje sposób na napisanie skryptu? Muszę zachować zestaw skryptów, ponieważ za każdym razem, gdy odświeżamy jedną z tych baz danych, mogę natychmiast przywrócić wszystkie ustawienia.
Wes

Odpowiedzi:


9

Przyznanie uprawnień do schematu (np. dbo) Będzie kaskadowe dla wszystkich obiektów w tym schemacie. W przypadku indywidualnych wyjątków możesz po prostu wymienić je wyraźnie:

GRANT SELECT ON SCHEMA::dbo TO [role];
GO

GRANT INSERT, UPDATE --, DELETE
  ON dbo.table_they_can_write_to TO [role];

DENY SELECT ON dbo.table_they_cannot_read TO [role];

3
Wystarczająco łatwe. Cieszę się, że mamy taką społeczność.
Wes

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.