2009-07-15 12 views
138

Niedawno pracowałem na wielu różnych obszarach SQL Server, z którymi normalnie nie mam do czynienia. Jedną z nich, która mnie myli, jest obszar Loginy i Użytkownicy. Wydaje się, że powinien to być całkiem prosty temat ...Różnica między użytkownikiem a logowaniem w SQL Server

Wygląda na to, że każde logowanie może mieć tylko jednego użytkownika, a każdy użytkownik może mieć tylko 1 login.

Logowanie może być powiązane z wieloma tabelami, co powoduje powiązanie tego użytkownika z wieloma tabelami.

Moje pytanie brzmi: dlaczego masz login i użytkownika? wydają się być jednym z nich. Jakie są różnice lub czego brakuje?

Odpowiedz

162

"Login" nadaje główny wpis do SERWERA.

"Użytkownik" przyznaje wpis logowania do pojedynczej BAZY DANYCH.

Jeden "Login" może być powiązany z wieloma użytkownikami (po jednym na bazę danych).

Każdy z powyższych obiektów może mieć uprawnienia nadane na jego własnym poziomie. Zobacz następujące artykuły o wyjaśnienie każdego

+6

Ach nic dziwnego, nie mogłem znaleźć różnicy. Po prostu pracowałem z 1 bazą danych. dzięki. – corymathews

+1

Ta odpowiedź jest zasadniczo poprawna, ale jak rozumiem, konkretny użytkownik może uzyskać dostęp do więcej niż jednej bazy danych, która jest dostępna na tym konkretnym serwerze. Zatem logowanie się do użytkownika jest mapowaniem 1 do 1, ale baza danych użytkownika to mapowanie jeden do wielu. –

+0

@coreymathews: Mniej czasu w "Boy Meets World" i więcej czasu na książki! ;). – MSIS

25

Jednym z powodów posiadania obu jest to, że uwierzytelnianie może być wykonane przez serwer bazy danych, ale autoryzacja może być ograniczona do bazy danych. W ten sposób, jeśli przeniesiesz bazę danych na inny serwer, zawsze możesz zmienić relację logowania użytkownika na serwerze bazy danych, ale twoja baza danych nie musi się zmieniać.

+0

Czy mógłbyś rozwinąć? Jaka jest zaleta zmiany dokonanej na serwerze bazy danych, a nie w bazie danych? – HeyJude

+0

Powiedz, że chcesz wykonać kopię zapasową i przywrócić bazę danych. Przywracanie często odbywa się na nowym serwerze. Możesz nie chcieć dokonywać zmian w bazie danych podczas przywracania. –

+0

Dlaczego nie dokonać zmiany po przywróceniu bazy danych? – HeyJude

18

w skrócie,

logowania będzie miał dostęp do serwera.

i

Użytkownicy będzie miał dostęp do bazy danych.

5

Myślę, że jest to bardzo przydatne pytanie z dobrą odpowiedzią. Wystarczy dodać swoje trzy grosze ze strony MSDN Create a Login:

jest login jest głównym bezpieczeństwo, lub jednostka, która może być uwierzytelniony za pomocą bezpiecznego systemu. Użytkownicy potrzebują loginu, aby połączyć się z serwerem SQL. Możesz utworzyć login oparty na głównej firmie Windows (takiej jak użytkownik domeny lub grupa domeny Windows) lub możesz utworzyć login, który nie jest oparty na głównej firmie Windows (takiej jak login SQL Server).

Uwaga:
Aby użyć SQL Server Uwierzytelnianie, Database Engine musi używać uwierzytelniania trybie mieszanym. Aby uzyskać więcej informacji, zobacz Wybieranie trybu uwierzytelniania.

Jako podmiot zabezpieczeń, uprawnienia mogą być udzielane dla logowania. Zakres logowania to cały aparat bazy danych. Aby połączyć się z określoną bazą danych na wystąpienie SQL Server, login musi być zmapowany do użytkownika bazy danych. Uprawnienia w bazie danych są przyznawane i odmawiane użytkownikom bazy danych, a nie logowania.Uprawnienia, które mają zasięg całej instancji SQL Server (na przykład uprawnienie CREATE ENDPOINT), mogą otrzymać login.

+3

To jest trochę bardziej przejrzyste, jeśli wstawisz ">" na początku każdego akapitu w cytacie, więc jest sformatowany jako cytat. – Sam

+1

Dziękuję za sugestię Sam – ilmatte

+0

To było bardzo przydatne. Chociaż poprawnie skonfigurowałem użytkowników i loginy, system nie został skonfigurowany, aby umożliwić uwierzytelnianie logowania SQL Server. Dlaczego mogę tworzyć loginy SQL Server, gdy serwer nie pozwoli im się zalogować, jest poza mną! –

15

Myślę, że jest to naprawdę dobry MSDN blog post o tym temacie Laurentiu Cristofor:

Pierwszą ważną rzeczą, którą należy rozumieć o SQL Server bezpieczeństwa jest to, że istnieją dwie sfery bezpieczeństwa zaangażowane - serwer i bazę danych. Dziedzina serwera obejmuje wiele obszarów baz danych . Cała praca jest wykonywana w kontekście pewnej bazy danych, ale aby wykonać pracę, trzeba uzyskać najpierw dostęp do serwera, a następnie , aby uzyskać dostęp do bazy danych.

Dostęp do serwera jest przyznawany za pomocą loginu. Istnieją dwie główne kategorie logowania: uwierzytelnione logowania SQL Server i uwierzytelnione logowania w systemie Windows . Zazwyczaj będę się do nich odwoływał, używając krótszych nazw logowania i logowań SQL niż . Logowanie uwierzytelnione w systemie Windows może być loginem odwzorowanym na użytkowników systemu Windows lub loginy zmapowane na grupach systemu Windows. Aby móc połączyć się z serwerem, trzeba mieć dostęp przez jeden z tych typów lub loginów - loginy zapewniają dostęp do domeny serwera .

Jednak logowanie nie wystarcza, ponieważ praca jest zwykle wykonywana w bazie danych , a bazy danych to oddzielne dziedziny. Dostęp do baz danych jest przyznawany za pośrednictwem użytkowników .

Użytkownicy są odwzorowani na logowanie, a mapowanie jest wyrażone za pomocą właściwości SID logowania i użytkowników. Logowanie jest mapowane do użytkownika w bazie danych, jeśli ich wartości identyfikatora SID są identyczne. W zależności od rodzaju logowania, możemy dlatego kategoryzować użytkowników, którzy naśladują powyższą kategoryzację dla loginów; więc mamy użytkowników SQL i użytkowników systemu Windows i ta ostatnia kategoria składa się z użytkowników zmapowanych na loginy użytkowników Windows i użytkowników zmapowanych na loginy dla grup Windows.

Zróbmy krok do tyłu na szybki przegląd: login zapewnia dostęp do serwera i do dalszego uzyskać dostęp do bazy danych, użytkownik odwzorowane do logowania musi istnieć w bazie danych.

that's the link na cały wpis.

Powiązane problemy