Udostępnij za pośrednictwem


Spójne problemy z uwierzytelnianiem w programie SQL Server

Dotyczy: SQL Server

Uwaga

Polecenia podane w tym artykule dotyczą tylko systemów Windows.

Problemy z uwierzytelnianiem spójnym występujące w programie Microsoft SQL Server są zwykle związane z uwierzytelnianiem i autoryzacją użytkowników lub aplikacji próbujących uzyskać dostęp do bazy danych programu SQL Server. Mogą to być błędy uwierzytelniania, błędy odmowy dostępu lub inne problemy związane z zabezpieczeniami.

Kluczem do efektywnego rozwiązywania problemów ze spójnym uwierzytelnianiem jest zrozumienie różnych typów błędów i tego, co oznacza każdy komunikat o błędzie. Niektóre błędy mogą występować w więcej niż jednym problemie z uwierzytelnianiem. Aby rozwiązać ten błąd, możesz użyć informacji dotyczących rozwiązywania problemów wymienionych w sekcji Typy błędów .

Wymagania wstępne

Przed rozpoczęciem rozwiązywania problemów przejrzyj listę kontrolną wymagań wstępnych , aby przygotować następujące informacje:

Typy błędów

W tej sekcji opisano typy błędów i powiązane informacje.

  • Błędy usług katalogowych: jeśli plik dziennika błędów programu SQL Server zawiera albo oba następujące komunikaty, ten błąd jest związany z usługami Active Directory Domain Services (AD DS). Ten błąd może również wystąpić, jeśli system Windows na komputerze opartym na programie SQL Server nie może skontaktować się z kontrolerem domeny (DC) lub jeśli wystąpi problem z usługą podsystemu lokalnego urzędu zabezpieczeń (LSASS).

    Error -2146893039 (0x80090311): No authority could be contacted for authentication.
    Error -2146893052 (0x80090304): The Local Security Authority cannot be contacted.
    
  • Błędy niepowodzenia logowania: W przypadku rozwiązywania problemów z błędem "Logowanie nie powiodło się" dziennik błędów programu SQL Server zapewnia dodatkowe informacje o kodzie błędu 18456, w tym określoną wartość stanu, która oferuje więcej kontekstu dotyczącego błędu. Aby uzyskać więcej informacji, zobacz plik dziennika błędów programu SQL Server w wartości stanu SQL. Możesz spróbować rozwiązać problem zgodnie z opisem wartości stanu.

    W poniższej tabeli wymieniono konkretne komunikaty o błędach "Logowanie nie powiodło się" oraz ich możliwe przyczyny i rozwiązania.

    Komunikat o błędzie Więcej informacji
    "Wystąpił błąd na poziomie transportu podczas wysyłania żądania na serwer". Sprawdź, czy mapowanie połączonego konta serwera jest poprawne. Aby uzyskać więcej informacji, zobacz sp_addlinkedsrvlogin.
    "Nie można wygenerować kontekstu SSPI"
    "Nie można otworzyć testu> bazy danych <żądanego przez logowanie. Logowanie nie powiodło się". Baza danych może być w trybie offline lub uprawnienia mogą nie być wystarczające. Aby uzyskać więcej informacji, zobacz Database offline in MSSQLSERVER_18456 (Baza danych w trybie offline w MSSQLSERVER_18456).
    Sprawdź również, czy nazwa bazy danych w parametrach połączenia jest poprawna.
    "Logowanie nie powiodło się dla nazwy użytkownika> użytkownika<". Ten błąd może wystąpić, jeśli konto serwera proxy nie jest poprawnie uwierzytelnione.
    "Logowanie nie powiodło się dla użytkownika: 'NT AUTHORITY\ANONYMOUS LOGON'" Ten błąd może wystąpić, jeśli brakuje nazwy SPN, nazwa SPN jest zduplikowana lub nazwa SPN znajduje się na niewłaściwym koncie.
    "Logowanie nie powiodło się dla nazwy użytkownika> użytkownika<".
    "Logowanie użytkownika '<database\username>' nie powiodło się"
    Sprawdź, czy parametry połączenia zawierają nieprawidłową nazwę serwera. Sprawdź również, czy użytkownik należy do grupy lokalnej, która jest używana do udzielania dostępu do serwera. Aby uzyskać więcej przyczyn, zobacz NT AUTHORITY\ANONYMOUS LOGON.
    "Logowanie użytkownika 'username>'< nie powiodło się. Przyczyna: Hasło nie jest zgodne z podanym identyfikatorem logowania". Ten błąd może wystąpić, jeśli jest używane nieprawidłowe hasło. Aby uzyskać więcej informacji, zobacz Logowanie nie powiodło się dla użytkownika "<nazwa użytkownika>" lub logowanie nie powiodło się dla użytkownika "<nazwa użytkownika> domeny><".
    "Program SQL Server nie istnieje lub nie ma odmowy dostępu". Połączenia nazwane potoków kończą się niepowodzeniem, ponieważ użytkownik nie ma uprawnień do logowania się do systemu Windows.
    "Logowanie pochodzi z niezaufanej domeny i nie może być używane z uwierzytelnianiem systemu Windows". Ten błąd może być związany z problemami z podsystemem zabezpieczeń lokalnych .
    "Konto użytkownika nie ma dozwolonego typu logowania do sieci". Logowanie się do sieci może nie być możliwe.

Typy problemów z uwierzytelnianiem spójnym

W tej sekcji opisano typowe przyczyny problemów ze spójnym uwierzytelnianiem wraz z odpowiednimi rozwiązaniami. Wybierz typ problemu, aby wyświetlić odpowiednie problemy, przyczyny i rozwiązania.

Parametry połączenia

W tej sekcji wymieniono problemy związane z ustawieniami konfiguracji używanymi przez aplikacje do nawiązywania połączenia z bazą danych.

Bazy danych

W tej sekcji wymieniono problemy specyficzne dla różnych aspektów programu SQL Server:

  • Baza danych jest w trybie offline — odnosi się do scenariusza, w którym baza danych programu SQL Server próbuje ponownie nawiązać połączenie z wystąpieniem programu SQL Server skonfigurowanym na potrzeby trybu uwierzytelniania systemu Windows.

    Rozwiązanie: Aby uzyskać więcej informacji, zobacz MSSQLSERVER_18456.

  • Uprawnienia bazy danych — odnosi się do włączania lub ograniczania dostępu do bazy danych programu SQL Server.

    Rozwiązanie: Aby uzyskać więcej informacji, zobacz MSSQLSERVER_18456.

  • Błędy łączności serwera połączonego w programie SQL Server — występuje problem z procesem uwierzytelniania, który ma wpływ na połączone serwery w kontekście programu SQL Server.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz Błędy łączności połączonego serwera w programie SQL Server.

  • Metadane połączonego serwera są niespójne — odnosi się do problemu, w którym metadane połączonego serwera są niespójne lub nie są zgodne z oczekiwanymi metadanymi.

    Widok lub procedura składowana wykonuje zapytania dotyczące tabel lub widoków na serwerze połączonym, ale otrzymuje błędy logowania, mimo że instrukcja SELECT rozproszona skopiowana z procedury nie jest wykonywana.

    Ten problem może wystąpić, jeśli widok został utworzony, a następnie serwer połączony został ponownie utworzony lub tabela zdalna została zmodyfikowana bez ponownego kompilowania widoku.

    Rozwiązanie: odśwież metadane połączonego serwera, uruchamiając procedurę sp_refreshview składowaną.

  • Konto serwera proxy nie ma uprawnień — zadanie usługi SQL Server Integration Service (SSIS) uruchamiane przez agenta SQL może wymagać uprawnień innych niż te, które może zapewnić konto usługi programu SQL Agent.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz SSIS package does not run when called from a SQL Server Agent job step (Pakiet SSIS nie jest uruchamiany po wywołaniu z kroku zadania agenta programu SQL Server).

  • Nie można zalogować się do bazy danych programu SQL Server — niemożność zalogowania się może powodować błędy uwierzytelniania.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz MSSQLSERVER_18456.

Usługi katalogowe

W tej sekcji wymieniono problemy związane z usługami katalogowymi i serwerami.

  • Konto jest wyłączone — ten scenariusz może wystąpić, jeśli konto użytkownika zostało wyłączone przez administratora lub użytkownika. W takim przypadku nie można zalogować się przy użyciu tego konta lub nie możesz użyć tego konta do uruchomienia usługi. Może to powodować spójne problemy z uwierzytelnianiem, ponieważ może uniemożliwić dostęp do zasobów lub wykonywanie akcji wymagających uwierzytelniania.

    Rozwiązanie: Administrator domeny może rozwiązać ten problem, ponownie włączając konto. Gdy konto jest wyłączone, zazwyczaj jest to spowodowane tym, że użytkownik zbyt wiele razy próbował zalogować się przy użyciu nieprawidłowego hasła lub aplikacja lub usługa próbuje użyć starego hasła.

  • Konto nie należy do grupy — ten problem może wystąpić, jeśli użytkownik próbuje uzyskać dostęp do zasobu ograniczonego do określonej grupy.

    Rozwiązanie: Sprawdź identyfikatory logowania SQL, aby wyliczyć dozwolone grupy i upewnij się, że użytkownik należy do jednej z grup.

  • Migracja konta nie powiodła się — jeśli stare konta użytkowników nie mogą nawiązać połączenia z serwerem, ale nowo utworzone konta mogą, migracja konta może być nieprawidłowa. Ten problem jest związany z usługami AD DS.

    Rozwiązanie: Aby uzyskać więcej informacji, zobacz Transfer logins and passwords between instances of SQL Server (Transferowanie identyfikatorów logowania i haseł między wystąpieniami programu SQL Server).

  • Kontroler domeny jest w trybie offline — odnosi się do problemu, w którym kontroler domeny nie jest dostępny.

    Rozwiązanie: Użyj polecenia , nltest aby wymusić na komputerze przełączenie się na inny kontroler domeny. Aby uzyskać więcej informacji, zobacz Identyfikator zdarzenia replikacji usługi Active Directory 2087: Niepowodzenie wyszukiwania DNS spowodowało niepowodzenie replikacji.

  • Zapora blokuje kontroler domeny — podczas zarządzania dostępem użytkownika do zasobów mogą wystąpić problemy.

    Rozwiązanie: Upewnij się, że kontroler domeny jest dostępny z poziomu klienta lub serwera. W tym celu użyj nltest /SC_QUERY:CONTOSO polecenia .

  • Logowanie pochodzi z niezaufanej domeny — ten problem jest związany z poziomem zaufania między domenami. Może zostać wyświetlony następujący komunikat o błędzie: "Logowanie nie powiodło się. Logowanie pochodzi z niezaufanej domeny i nie może być używane z uwierzytelnianiem systemu Windows. (18452)."

    Błąd 18452 wskazuje, że logowanie używa uwierzytelniania systemu Windows, ale logowanie jest nierozpoznaną jednostką systemu Windows. Nierozpoznana jednostka systemu Windows wskazuje, że nie można zweryfikować logowania przez system Windows. Może się to zdarzyć, ponieważ logowanie do systemu Windows pochodzi z niezaufanej domeny. Poziom zaufania między domenami może powodować błędy uwierzytelniania konta lub widoczność nazwy dostawcy usług (SPN).

    Rozwiązanie: Aby rozwiązać ten problem, zobacz MSSQLSERVER_18452.

  • Brak uprawnień dla grup między domenami — użytkownicy z domeny zdalnej powinni należeć do grupy w domenie programu SQL Server. Jeśli spróbujesz użyć grupy lokalnej domeny do nawiązania połączenia z wystąpieniem programu SQL Server z innej domeny, może wystąpić problem.

    Rozwiązanie: Jeśli domeny nie mają odpowiedniego zaufania, dodanie użytkowników w grupie w domenie zdalnej może uniemożliwić serwerowi wyliczenie członkostwa w grupie.

  • Uwierzytelnianie selektywne jest wyłączone — odnosi się do funkcji relacji zaufania domeny, która umożliwia administratorowi domeny ograniczenie dostępu użytkowników do zasobów w domenie zdalnej. Jeśli uwierzytelnianie selektywne nie jest włączone, wszyscy użytkownicy w zaufanej domenie mogą uzyskać dostęp do domeny zdalnej.

    Rozwiązanie: Aby rozwiązać ten problem, włącz uwierzytelnianie selektywne, aby upewnić się, że użytkownicy nie mogą uwierzytelniać się w domenie zdalnej.

Uwierzytelnianie kerberos

W tej sekcji wymieniono problemy związane z uwierzytelnianiem Kerberos:

  • Niepoprawny sufiks DNS jest dołączany do nazwy NetBIOS — ten problem może wystąpić, jeśli używasz tylko nazwy NetBIOS (na przykład SQLPROD01) zamiast w pełni kwalifikowanej nazwy domeny (FQDN) (na przykład SQLPROD01.CONTOSO.COM). W takim przypadku może zostać dołączony nieprawidłowy sufiks DNS.

    Rozwiązanie: Sprawdź ustawienia sieci, aby uzyskać domyślne sufiksy, aby upewnić się, że są poprawne, lub użyj nazwy FQDN, aby uniknąć problemów.

  • Niesymetryczność zegara jest zbyt wysoka — ten problem może wystąpić, jeśli wiele urządzeń w sieci nie jest zsynchronizowanych. Aby uwierzytelnianie Kerberos działało, zegary między urządzeniami nie mogą być wyłączone przez więcej niż pięć minut lub mogą wystąpić spójne błędy uwierzytelniania.

    Rozwiązanie: Skonfiguruj komputery, aby regularnie synchronizować zegary z centralną usługą czasu.

  • Delegowanie poufnych kont do innych usług — niektóre konta mogą być oznaczone jako Sensitive w usługach AD DS. Tych kont nie można delegować do innej usługi w scenariuszu podwójnego przeskoku. Konta poufne mają kluczowe znaczenie dla zapewnienia bezpieczeństwa, ale mogą mieć wpływ na uwierzytelnianie.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz Logowanie nie powiodło się dla użytkownika NT AUTHORITY\ANONYMOUS LOGON.

  • Delegowanie do udziału plików — odnosi się do sytuacji, w której użytkownik lub aplikacja deleguje swoje poświadczenia w celu uzyskania dostępu do udziału plików. Bez odpowiednich ograniczeń delegowanie poświadczeń do udziału plików może tworzyć zagrożenia bezpieczeństwa.

    Rozwiązanie: Aby rozwiązać tego rodzaju problem, upewnij się, że używasz ograniczonego delegowania.

  • Rozłączana przestrzeń nazw DNS — odnosi się do spójnego problemu z uwierzytelnianiem, który może wystąpić, jeśli sufiks DNS nie jest zgodny między elementem członkowskim domeny a systemem DNS. Jeśli używasz rozłącznej przestrzeni nazw, mogą wystąpić problemy z uwierzytelnianiem. Jeśli hierarchia organizacyjna w usługach AD DS i w systemie DNS nie jest zgodna, niewłaściwa nazwa SPN może zostać wygenerowana, jeśli używasz nazwy NETBIOS w parametrach połączenia aplikacji bazy danych. W takiej sytuacji nie można odnaleźć nazwy SPN i zamiast poświadczeń protokołu Kerberos są używane poświadczenia NTLM (New Technology LAN Manager).

    Rozwiązanie: Aby rozwiązać ten problem, użyj nazwy FQDN serwera lub określ nazwę SPN w parametrach połączenia. Aby uzyskać informacje na temat nazwY FQDN, zobacz Nazewnictwo komputerów.

  • Zduplikowana nazwa SPN — odnosi się do sytuacji, w której co najmniej dwa nazwy SPN są identyczne w domenie. Nazwy SPN są używane do unikatowego identyfikowania usług uruchomionych na serwerach w domenie systemu Windows. Zduplikowane nazwy SPN mogą powodować problemy z uwierzytelnianiem.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz Naprawianie błędu za pomocą programu Kerberos Configuration Manager (zalecane).

  • Włączanie portów HTTP w sieciach SPN — zazwyczaj nazwy SPN HTTP nie używają numerów portów (na przykład http/web01.contoso.com).

    Rozwiązanie: Aby rozwiązać ten problem, możesz włączyć tę funkcję przy użyciu zasad na klientach. Wówczas nazwa SPN musi być w http/web01.contoso.com:88 formacie, aby umożliwić prawidłowe działanie protokołu Kerberos. W przeciwnym razie są używane poświadczenia NTLM.

    Poświadczenia NTLM nie są zalecane, ponieważ mogą utrudniać diagnozowanie problemu. Ponadto taka sytuacja może spowodować nadmierne obciążenie administracyjne.

  • Wygasłe bilety — odnosi się do biletów protokołu Kerberos. Używanie wygasłych biletów Kerberos może powodować problemy z uwierzytelnianiem.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz Wygasłe bilety.

  • Plik HOSTS jest nieprawidłowy — plik HOSTS może zakłócić wyszukiwanie DNS i może wygenerować nieoczekiwaną nazwę NAZWY SPN. Taka sytuacja powoduje użycie poświadczeń NTLM. Jeśli nieoczekiwany adres IP znajduje się w pliku HOSTS, wygenerowana nazwa SPN może nie odpowiadać wskazanemu serwerowi zaplecza.

    Rozwiązanie: Przejrzyj plik HOSTS i usuń wpisy dla serwera. Wpisy pliku HOSTS są wyświetlane w raporcie SQLCHECK.

  • Problem z uprawnieniami identyfikatora zabezpieczeń (SID) dla poszczególnych usług — identyfikator SID usługi to funkcja zabezpieczeń programu SQL Server, która ogranicza połączenia lokalne do używania protokołu NTLM, a nie protokołu Kerberos jako metody uwierzytelniania. Usługa może wykonać jeden przeskok na inny serwer przy użyciu poświadczeń NTLM, ale nie można jej delegować dalej bez użycia ograniczonego delegowania. Aby uzyskać więcej informacji, zobacz Logowanie nie powiodło się dla użytkownika NT AUTHORITY\ANONYMOUS LOGON.

    Rozwiązanie: Aby rozwiązać ten problem, administrator domeny musi skonfigurować ograniczone delegowanie.

  • Uwierzytelnianie w trybie jądra — nazwa SPN na koncie puli aplikacji jest zwykle wymagana dla serwerów internetowych. Jednak w przypadku użycia uwierzytelniania w trybie jądra nazwa SPN hosta komputera jest używana do uwierzytelniania. Ta akcja ma miejsce w jądrze. To ustawienie może być używane, jeśli serwer hostuje wiele różnych witryn internetowych, które używają tego samego adresu URL nagłówka hosta, różnych kont puli aplikacji i uwierzytelniania systemu Windows.

    Rozwiązanie: Usuń nazwy SPN HTTP, jeśli uwierzytelnianie w trybie jądra jest włączone.

  • Ogranicz uprawnienia delegowania do dostępu lub programu Excel — dostawcy technologii joint engine (JET) i aparatu łączności dostępu (ACE) są podobne do dowolnego z systemów plików. Aby umożliwić programowi SQL Server odczytywanie plików znajdujących się na innym komputerze, należy użyć ograniczonego delegowania. Ogólnie rzecz biorąc, dostawca ACE nie powinien być używany na serwerze połączonym, ponieważ jawnie nie jest to obsługiwane. Dostawca JET jest przestarzały i jest dostępny tylko na komputerach 32-bitowych.

    Uwaga

    Gdy program SQL Server 2014, ostatnia wersja do obsługi instalacji 32-bitowych, przestanie być obsługiwany, scenariusz JET nie będzie już obsługiwany.

  • Brak nazwy SPN — ten problem może wystąpić, jeśli nie ma nazwy SPN powiązanej z wystąpieniem usługi SQL Sever.

    Rozwiązanie: Aby uzyskać więcej informacji, zobacz Naprawianie błędu za pomocą programu Kerberos Configuration Manager (zalecane).

  • Nie jest ograniczonym obiektem docelowym — jeśli ograniczone delegowanie jest włączone dla określonego konta usługi, protokół Kerberos zakończy się niepowodzeniem, jeśli nazwa SPN serwera docelowego nie znajduje się na liście obiektów docelowych ograniczonego delegowania.

    Rozwiązanie: Aby rozwiązać ten problem, administrator domeny musi dodać nazwę SPN serwera docelowego do docelowych nazw SPN konta usługi średniej warstwy.

  • NTLM i ograniczone delegowanie — jeśli obiektem docelowym jest udział plików, typ delegowania konta usługi średniej warstwy musi mieć wartość Constrained-Any , a nie Constrained-Kerberos. Jeśli typ delegowania jest ustawiony na wartość Constrained-Kerberos, konto średniej warstwy może przydzielać tylko do określonych usług, ale ustawienie Ograniczone dowolne umożliwia kontu usługi delegowanie do dowolnej usługi.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz Logowanie nie powiodło się dla użytkownika NT AUTHORITY\ANONYMOUS LOGON.

  • Nie można ufać kontu usługi dla delegowania w usłudze AD — w scenariuszu podwójnego przeskoku konto usługi średniej warstwy musi być zaufane dla delegowania w usługach AD DS. Jeśli konto usługi nie jest zaufane dla delegowania, uwierzytelnianie kerberos może zakończyć się niepowodzeniem.

    Rozwiązanie: Jeśli jesteś administratorem, włącz opcję Zaufane dla delegowania .

  • Niektórzy dostawcy w starszej wersji nie obsługują protokołu Kerberos za pośrednictwem nazwanych potoków — starszy dostawca OLE DB (SQLOLEDB) i dostawca ODBC (SQL Server) w pakiecie z systemem Windows nie oferują obsługi uwierzytelniania Kerberos za pośrednictwem nazwanych potoków. Zamiast tego obsługują tylko uwierzytelnianie NTLM.

    Rozwiązanie: Użyj połączenia TCP, aby zezwolić na uwierzytelnianie Kerberos. Można również użyć nowszego sterownika, na przykład MSOLEDBSQL lub ODBC Driver 17. Jednak protokół TCP jest nadal preferowany w porównaniu z nazwanymi potokami, niezależnie od wersji sterownika.

  • Nazwa SPN jest skojarzona z nieprawidłowym kontem — ten problem może wystąpić, jeśli nazwa SPN jest skojarzona z niewłaściwym kontem w usługach AD DS. Aby uzyskać więcej informacji, zobacz Naprawianie błędu za pomocą programu Kerberos Configuration Manager (zalecane).

    Jeśli nazwa SPN jest skonfigurowana na niewłaściwym koncie w usługach AD DS, może zostać wyświetlony komunikat o błędzie.

    Rozwiązanie: Aby rozwiązać ten problem, wykonaj następujące kroki:

    1. Służy SETSPN -Q spnName do lokalizowania nazwy SPN i jej bieżącego konta.
    2. Użyj polecenia SETSPN -D , aby usunąć istniejące nazwy SPN.
    3. Użyj polecenia , SETSPN -S aby przeprowadzić migrację nazwy SPN do właściwego konta.
  • Alias SQL może nie działać poprawnie — alias programu SQL Server może spowodować wygenerowanie nieoczekiwanej nazwy SPN. Powoduje to niepowodzenie poświadczeń NTLM, jeśli nie znaleziono nazwy SPN, lub niepowodzenie interfejsu SSPI, jeśli przypadkowo pasuje do nazwy SPN innego serwera.

    Rozwiązanie: Aliasy SQL są wyświetlane w raporcie SQLCHECK. Aby rozwiązać ten problem, zidentyfikuj i popraw wszelkie niepoprawne lub nieprawidłowo skonfigurowane aliasy SQL, aby wskazywały poprawny program SQL Server.

  • Użytkownik należy do wielu grup — jeśli użytkownik należy do wielu grup, w systemie Kerberos mogą wystąpić problemy z uwierzytelnianiem. Jeśli używasz protokołu Kerberos za pośrednictwem protokołu UDP, cały token zabezpieczający musi zmieścić się w jednym pakietie. Użytkownicy należący do wielu grup mają większy token zabezpieczający niż użytkownicy należący do mniejszej liczby grup.

    Rozwiązanie: Jeśli używasz protokołu Kerberos za pośrednictwem protokołu TCP, możesz zwiększyć ustawienie [MaxTokenSize]. Aby uzyskać więcej informacji, zobacz MaxTokenSize i Kerberos Token Bloat.

  • Użyj nagłówka hosta witryny internetowej — nagłówek hosta HTTP odgrywa bardzo ważną rolę w protokole HTTP na potrzeby uzyskiwania dostępu do stron internetowych.

    Rozwiązanie: Jeśli witryna sieci Web ma nazwę nagłówka hosta, nie można użyć nazwy SPN hostów. Należy użyć jawnej nazwy SPN HTTP. Jeśli witryna sieci Web nie ma nazwy nagłówka hosta, jest używana funkcja NTLM. Nie można delegować protokołu NTLM do wystąpienia programu SQL Server zaplecza lub innej usługi.

NT LAN Manager (NTLM)

W tej sekcji wymieniono problemy specyficzne dla protokołu NTLM (NT LAN Manager):

  • Odmowa dostępu dla identyfikatorów logowania równorzędnego NTLM — odnosi się do problemu związanego z logowaniem równorzędnym NTLM.

    Rozwiązanie: Podczas komunikacji między komputerami znajdującymi się na stacjach roboczych lub w domenach, które sobie nie ufają, można skonfigurować identyczne konta na obu komputerach i użyć uwierzytelniania równorzędnego NTLM.

    Logowania działają tylko wtedy, gdy zarówno konto użytkownika, jak i hasło są zgodne na obu komputerach. Uwierzytelnianie NTLM może być wyłączone lub nieobsługiwane po stronie klienta lub serwera. Taka sytuacja może spowodować błędy uwierzytelniania. Aby uzyskać więcej informacji, zobacz MSSQLSERVER_18456.

  • Scenariusze podwójnego przeskoku na wielu komputerach — proces podwójnego przeskoku zakończy się niepowodzeniem, jeśli są używane poświadczenia NTLM. Wymagane są poświadczenia protokołu Kerberos.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz Logowanie nie powiodło się dla użytkownika NT AUTHORITY\ANONYMOUS LOGON.

  • Ochrona przed sprzężeniami zwrotnymi nie jest poprawnie ustawiona — funkcja Ochrony sprzężenia zwrotnego została zaprojektowana tak, aby uniemożliwić aplikacjom wywoływanie innych usług na tym samym komputerze. Jeśli funkcja ochrony sprzężenia zwrotnego nie jest poprawnie skonfigurowana lub wystąpiła awaria, ta sytuacja może pośrednio powodować problemy z uwierzytelnianiem.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz MSSQLSERVER_18456.

  • Ochrona przed sprzężeniami zwrotnymi kończy się niepowodzeniem po nawiązaniu połączenia z odbiornikiem zawsze włączonym — ten problem jest związany z ochroną sprzężenia zwrotnego. Po nawiązaniu połączenia z odbiornikiem Always-On z węzła podstawowego połączenie używa uwierzytelniania NTLM.

    Rozwiązanie: Aby uzyskać więcej informacji, zobacz MSSQLSERVER_18456.

  • Problem, który ma wpływ na poziom zgodności lanmanu — problem z uwierzytelnianiem za pomocą menedżera LAN Manager (LANMAN) występuje zwykle w przypadku niezgodności protokołów uwierzytelniania używanych przez starsze komputery (przed systemem Windows Server 2008) i nowsze komputery. Po ustawieniu poziomu zgodności na wartość 5 protokół NTLMv2 jest niedozwolony.

    Rozwiązanie: Przełączenie do protokołu Kerberos pozwala uniknąć tego problemu, ponieważ protokół Kerberos jest bezpieczniejszy. Aby uzyskać więcej informacji, zobacz Logowanie nie powiodło się dla użytkownika NT AUTHORITY\ANONYMOUS LOGON.

Logowanie sql

W tej sekcji wymieniono problemy związane z poświadczeniami uwierzytelniania:

  • Nieprawidłowe hasło — odnosi się do problemu związanego z logowaniem.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz MSSQLSERVER_18456.

  • Nieprawidłowa nazwa użytkownika — odnosi się do problemu związanego z logowaniem.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz MSSQLSERVER_18456.

  • Logowania programu SQL Server nie są włączone — odnosi się do scenariusza, w którym próbujesz nawiązać połączenie z wystąpieniem programu Microsoft SQL Server przy użyciu uwierzytelniania programu SQL Server, ale logowanie skojarzone z kontem jest wyłączone.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz MSSQLSERVER_18456.

  • Połączenia nazwanych potoków kończą się niepowodzeniem, ponieważ użytkownik nie ma uprawnień do logowania się do systemu Windows — odwołuje się do problemu z uprawnieniami w systemie Windows.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz Problem z połączeniami nazwanych potoków w programie SQL Server.

Uprawnienia systemu Windows

W tej sekcji wymieniono problemy specyficzne dla uprawnień lub ustawień zasad systemu Windows:

  • Dostęp jest udzielany za pośrednictwem grup lokalnych — jeśli użytkownik nie należy do grupy lokalnej, która jest używana do udzielania dostępu do serwera, dostawca wyświetla komunikat o błędzie "Logowanie nie powiodło się dla użytkownika "contoso/user1".

    Rozwiązanie: Administrator bazy danych może sprawdzić tę sytuację, sprawdzając folder Logowania zabezpieczeń> w programie SQL Server Management Studio (SSMS). Jeśli baza danych jest zawartą bazą danych, sprawdź w obszarze databasename. Aby uzyskać więcej informacji, zobacz Logowanie nie powiodło się dla użytkownika "<nazwa użytkownika>" lub logowanie nie powiodło się dla użytkownika "<domena>\<nazwa użytkownika>".

  • Funkcja Credential Guard jest włączona — ten scenariusz wskazuje, że funkcja Credential Guard jest włączona w systemie Windows i służy do tworzenia bezpiecznego środowiska do przechowywania poufnych informacji. Jednak w niektórych sytuacjach ta funkcja może powodować problemy z uwierzytelnianiem.

    Rozwiązanie: Aby rozwiązać ten problem, poproś administratora domeny o skonfigurowanie ograniczonego delegowania. Aby uzyskać więcej informacji, zobacz Zagadnienia i znane problemy podczas korzystania z funkcji Credential Guard.

  • Błędy podsystemu zabezpieczeń lokalnych — jeśli wystąpią błędy podsystemu zabezpieczeń lokalnych, szczególnie te, które są połączone z usługą LSASS, przestają odpowiadać, mogą wskazywać podstawowe problemy wpływające na uwierzytelnianie.

    Rozwiązanie: Aby rozwiązać te błędy, zobacz Błędy podsystemu zabezpieczeń lokalnych w programie SQL Server.

  • Niedozwolone logowanie do sieci — ten scenariusz występuje podczas próby zalogowania się do sieci, ale żądanie logowania jest odrzucane z pewnych powodów.

    Rozwiązanie: Aby rozwiązać ten problem, zobacz User doesn't have permissions to log in the network (Użytkownik nie ma uprawnień do logowania się do sieci).

  • Tylko administratorzy mogą się zalogować — ten problem występuje, jeśli dziennik zabezpieczeń na komputerze jest pełny i nie ma wystarczającej ilości miejsca do wypełnienia zdarzeń. Funkcja zabezpieczeń CrashOnAuditFail jest używana przez administratorów systemu do sprawdzania wszystkich zdarzeń zabezpieczeń. Prawidłowe wartości to CrashOnAuditFail0, 1 i 2. Jeśli klucz dla parametru jest ustawiony na CrashOnAuditFailwartość 2, oznacza to, że dziennik zabezpieczeń jest pełny i zostanie wyświetlony komunikat o błędzie "Tylko administratorzy mogą się zalogować".

    Rozwiązanie: Aby rozwiązać ten problem, wykonaj następujące kroki:

    1. Uruchom edytor rejestru.
    2. Znajdź i sprawdź podklucz HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa!crashonauditfail , aby sprawdzić, czy wartość jest ustawiona na 2. Ta wartość wskazuje, że dziennik zabezpieczeń wymaga ręcznego wyczyszczenia.
    3. Ustaw wartość na 0, a następnie uruchom ponownie serwer. Możesz również zmienić dziennik zabezpieczeń, aby umożliwić przerzucanie zdarzeń. Aby uzyskać więcej informacji na temat wpływu ustawienia na wszystkie usługi, takie jak SQL, IIS, udział plików i logowanie, zobacz Użytkownicy nie mogą uzyskać dostępu do witryn sieci Web, gdy dziennik zdarzeń zabezpieczeń jest pełny.

    Uwaga

    Ten problem dotyczy tylko zintegrowanych identyfikatorów logowania. Połączenie nazwane potoki będzie również miało wpływ na logowanie do programu SQL Server, ponieważ nazwane potoki najpierw logują się do potoku administracyjnego systemu Windows przed nawiązaniem połączenia z programem SQL Server.

  • Konto usługi nie jest zaufane w przypadku delegowania — ten rodzaj problemu występuje zwykle, gdy konto usługi nie może przypisywać poświadczeń do innych serwerów. Ten problem może mieć wpływ na usługi wymagające delegowania.

    Rozwiązanie: Jeśli scenariusz delegowania nie jest włączony, sprawdź plik SQL Server secpol.msc, aby ustalić, czy konto usługi programu SQL Server znajduje się na liście w obszarze Przypisywanie > praw użytkownika zasad > lokalnych Personifikuj klienta po ustawieniu zasad zabezpieczeń uwierzytelniania. Aby uzyskać więcej informacji, zobacz Włączanie zaufania kont komputerów i użytkowników w kwestii delegowania.

  • Nie można załadować profilu użytkownika systemu Windows w programie SQL Server — odnosi się do problemu z profilem użytkownika systemu Windows.

    Rozwiązanie: Aby uzyskać więcej informacji na temat rozwiązywania problemów z uszkodzonymi profilami użytkowników, zobacz Nie można załadować profilu użytkownika systemu Windows w programie SQL Server.

Inne aspekty

W tej sekcji wymieniono problemy związane z uwierzytelnianiem i kontrolą dostępu w środowisku internetowym:

  • Uwierzytelnianie zintegrowane nie jest włączone — odnosi się do problemu z konfiguracją, w którym zintegrowane uwierzytelnianie systemu Windows (IWA) nie jest poprawnie skonfigurowane.

    Rozwiązanie: Aby rozwiązać ten problem, upewnij się, że opcja Zintegrowane uwierzytelnianie systemu Windows jest włączona w ustawieniach Opcji internetowych .

  • Uwierzytelnianie usług IIS jest niedozwolone — ten problem występuje z powodu błędnej konfiguracji w usługach IIS. Ustawienia uwierzytelniania zdefiniowane w pliku Web.config aplikacji internetowej mogą powodować konflikt z ustawieniami skonfigurowanymi w usługach IIS. Taka sytuacja może powodować problemy z uwierzytelnianiem.

    Rozwiązanie: Aby rozwiązać ten problem, skonfiguruj witrynę internetową w celu włączenia uwierzytelniania systemu Windows i ustaw <identity impersonate="true"/> wartość w pliku Web.config .

  • Nieprawidłowa strefa internetowa — ten problem może wystąpić, jeśli spróbujesz uzyskać dostęp do witryny internetowej, która nie znajduje się w odpowiedniej strefie internetowej w programie Internet Explorer. Poświadczenia nie będą działać, jeśli witryna internetowa znajduje się w lokalnej strefie Intranet.

    Rozwiązanie: Dodaj serwer internetowy do lokalnej strefy intranetowej programu IE.

Zastrzeżenie dotyczące innych firm

Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.

Więcej informacji

Zbieranie danych w celu rozwiązywania problemów z łącznością z programem SQL Server