2009-07-20 1 views
35

Próbuję dowiedzieć się, dlaczego SQL Server ma rolę db_owner schematu i db_owner rolę? To bardzo mylące. Szukałem odpowiedzi i jak dotąd rozumiem:Role serwera SQL, schematy, użytkownicy

  1. Wszystkie tabele i obiekty (takie jak ograniczenia itp.) Należą do schematu. DBO jest domyślnym schematem.
  2. Użytkownik może otrzymać pozwolenie na edycję każdego obiektu lub schematu. Uprawnienie do schematu rozszerza uprawnienia do wszystkich obiektów w tym schemacie. Nie musisz więc udzielać zgody na każdy pojedynczy obiekt.
  3. Rola grupuje uprawnienia razem dla wygody.

Jeśli którykolwiek z powyższych jest nieprawidłowy, daj mi znać. Ale myślę, że aż tak dobrze. Teraz moje pytania to:

  1. Czym dokładnie jest schemat db_owner widziany w oknie dialogowym "Użytkownik bazy danych" SQL Server Management Studio? W tym samym oknie dialogowym definiujesz "Schemat domyślny" jako dbo. Dlaczego te dwie rzeczy nie są takie same? Jeśli domyślnie SQL Server używa dbo do tworzenia wszystkich obiektów pod, jaki jest użytek db_owner?
  2. Dlaczego użytkownik chce posiadać schemat? Już przypisujesz uprawnienia/role. Co daje właścicielowi db_accessadmin?
  3. Czy możesz podać przykład tworzenia obiektów pod schematem db_owner i schematu db_accessadmin? Innymi słowy, czy ktokolwiek legalnie używa tych schematów?
+0

Zgoda. Śmieszne było tworzenie dwóch różnych rodzajów obiektów (schematu i roli) o tej samej nazwie. – LarryBud

Odpowiedz

23

Schemat SQL Server jest po prostu kontener obiektów, takich jak tabele, procedury przechowywane, itp rola bazy danych jest grupą podmiotów, takich jak okna logowania, użytkowników serwera SQL itp

Pomysł polega na tym, że możesz odgrywać rolę "IT" i mieć wszystkich użytkowników IT w tej roli. Wtedy możesz mieć schemat o nazwie "IT" i mieć wszystkie tabele, które należą do IT pod tym. Po wyjęciu z pudełka SQL Server tworzy dopasowane schematy dla każdego domyślnego użytkownika i roli w bazie danych, ale myślę, że intencją jest to, aby dostosować to do potrzeb Twojej organizacji.

This article ma więcej informacji na temat różnic między właścicielami a schematami. This question na przepełnieniu stosu może być również przydatne.

+0

Artykuł jest całkiem przydatny. Więc od twojej odpowiedzi biorę to za schemat db_accessadmin jest bezużyteczny i jest efektem ubocznym roli db_accessadmin. Nikt nie tworzy tabel w schemacie db_accessadmin, ale zamiast tego używasz schematu bardziej pasującego do twoich danych. Czy istnieje lista "własności" obiektu/schematu? Czy to wszystkie prawa można sobie wyobrazić dla tego obiektu? A może jesteś właścicielem bez praw do odczytu? – Budric

+0

Więcej informacji można znaleźć w tym artykule na stronie http://msdn.microsoft.com/en-us/library/ms189462.aspx. W szczególności "Obiekty utworzone w schemacie są własnością właściciela schematu i mają NULL identyfikator_partariusza w sys.objects. Własność obiektów zawartych w schemacie można przenieść do dowolnej jednostki bazy danych na poziomie bazy danych, ale właściciel schematu zawsze zachowuje kontrolę uprawnienia do obiektów w schemacie. " Wygląda więc na to, że właściciel zawsze ma pełną kontrolę nad obiektami w schemacie. – tbreffni

0

Przytoczę poniżej poniższy link.

https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx

SQL Server statki z dziesięciu predefiniowanych schematów, które mają takie same nazwy jak wbudowanej bazy danych użytkowników i ról. Występują głównie w celu zapewnienia kompatybilności wstecznej. Możesz usunąć schematy o tych samych nazwach, co stałe role bazy danych, jeśli ich nie potrzebujesz.Nie można upuścić następujących schematów:

  • dbo
  • guest
  • sys
  • INFORMATION_SCHEMA