Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Logowanie SQL

Termin Definicja
Logowanie SQL

Logowanie SQL to uwierzytelnianie kontem zdefiniowanym wewnątrz SQL Server, niezależnym od systemu operacyjnego.

Logowanie SQL w mechanizmie uwierzytelniania SQL Server

Logowanie SQL jest jednym z dwóch podstawowych sposobów uwierzytelniania użytkowników w Microsoft SQL Server. W tym trybie osoba lub aplikacja podaje nazwę loginu oraz hasło zapisane i weryfikowane przez sam silnik SQL Server. To odróżnia logowanie SQL od uwierzytelniania Windows, w którym tożsamość jest potwierdzana przez system Windows oraz powiązane z nim mechanizmy domenowe lub lokalne. Login SQL nie musi odpowiadać kontu istniejącemu w systemie operacyjnym. Może być używany przez narzędzia administracyjne, aplikacje, skrypty oraz usługi korzystające z połączenia do konkretnej instancji SQL Server.

Loginy SQL są obiektami poziomu instancji. Samo utworzenie loginu nie oznacza jeszcze dostępu do każdej bazy danych znajdującej się na serwerze. Po pomyślnym uwierzytelnieniu SQL Server sprawdza również, czy login ma odpowiednie powiązanie z użytkownikiem bazy danych oraz jakie uprawnienia zostały mu przydzielone. Dlatego poprawne hasło może pozwolić na połączenie z instancją, ale jednocześnie nie wystarczyć do odczytu tabel, wykonania procedury lub modyfikacji danych.

Tryb mieszany i konfiguracja dostępu

Aby korzystać z loginów SQL, instancja Microsoft SQL Server musi mieć włączony tryb uwierzytelniania obsługujący loginy SQL. W SQL Server występuje tryb Windows Authentication oraz tryb mieszany, określany jako SQL Server and Windows Authentication mode. W trybie wyłącznie Windows Authentication próba połączenia przy użyciu loginu SQL kończy się odrzuceniem, nawet jeśli login został wcześniej utworzony. Przełączenie trybu uwierzytelniania jest ustawieniem instancji i po zmianie zwykle wymaga ponownego uruchomienia usługi SQL Server, aby konfiguracja zaczęła obowiązywać.

Stan konfiguracji można sprawdzić w SQL Server Management Studio w właściwościach serwera, w obszarze Security. Dostępne jest również sprawdzenie właściwości instancji za pomocą Transact-SQL. Przykładowo zapytanie SELECT SERVERPROPERTY('IsIntegratedSecurityOnly'); zwraca wartość 1, gdy instancja przyjmuje wyłącznie uwierzytelnianie Windows, oraz 0, gdy działa tryb mieszany. Po włączeniu trybu mieszanego nadal trzeba utworzyć konkretny login SQL i nadać mu wymagane uprawnienia. Sama zmiana trybu nie tworzy automatycznie kont użytkowników ani nie zapewnia dostępu do baz.

Login instancji a użytkownik bazy danych

W SQL Server należy rozróżnić login od użytkownika bazy danych. Login służy do uwierzytelnienia na poziomie instancji, natomiast użytkownik jest obiektem istniejącym w określonej bazie danych. Typowa konfiguracja obejmuje utworzenie loginu poleceniem CREATE LOGIN, a następnie utworzenie użytkownika powiązanego z tym loginem za pomocą CREATE USER ... FOR LOGIN. Dopiero później można przypisać użytkownika do ról bazodanowych albo nadać mu uprawnienia do konkretnych schematów, tabel, widoków czy procedur składowanych.

Przykładowy schemat konfiguracji może wyglądać następująco: CREATE LOGIN AplikacjaLogin WITH PASSWORD = 'HasloUstaloneDlaSrodowiska';, a po przejściu do wybranej bazy: CREATE USER AplikacjaUzytkownik FOR LOGIN AplikacjaLogin;. W rzeczywistym środowisku hasło powinno spełniać wymagania zasad haseł obowiązujących dla instancji, a jego wartość nie powinna być umieszczana w publicznie dostępnych skryptach ani przesyłana w niechronionej konfiguracji. Do przydzielania dostępu należy używać możliwie wąskich uprawnień. Członkostwo w roli sysadmin daje pełne uprawnienia do instancji i nie powinno być stosowane jako domyślna metoda rozwiązywania problemów z dostępem.

Rozpoznawanie problemów z logowaniem SQL

Nieudane logowanie SQL może wynikać z kilku odrębnych przyczyn: wyłączonego trybu mieszanego, nieistniejącego loginu, wyłączonego loginu, błędnego hasła, wymuszonej zmiany hasła, blokady wynikającej z zasad haseł albo próby połączenia z niewłaściwą instancją. Komunikat błędu powinien być analizowany razem z nazwą serwera, nazwą instancji, bazą docelową i sposobem uwierzytelniania wybranym przez klienta. Połączenie z inną instancją niż zamierzona może dawać objawy wyglądające jak problem z kontem, mimo że login i hasło są prawidłowe w pierwotnym miejscu.

Po uzyskaniu połączenia można sprawdzić kontekst używany przez SQL Server, między innymi za pomocą zapytania SELECT SUSER_SNAME(), SYSTEM_USER, DB_NAME();. Pierwsza część identyfikuje login rozpoznany na poziomie serwera, a DB_NAME() pokazuje bieżącą bazę danych. Jeżeli login istnieje, lecz użytkownik w bazie został usunięty albo nie jest prawidłowo powiązany, połączenie może zostać nawiązane bez możliwości wykonania operacji w tej bazie. Diagnostyka powinna wtedy obejmować mapowanie loginu na użytkownika, członkostwo w rolach oraz uprawnienia do konkretnego obiektu, zamiast polegać na niekontrolowanym nadawaniu pełnych praw.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę