Nie mogę połączyć się z programem SQL Server przy użyciu konta „sa”, czego mi brakuje?

20

Próbuję zalogować się do wystąpienia programu SQL Server 2005 Express za pomocą następującego polecenia:

osql -S .\INSTANCE -U sa -P password

Pojawia się błąd: Logowanie nie powiodło się dla użytkownika „sa”.

Mogę połączyć się dobrze za pomocą przełącznika -E. Muszę dodać, że działa od miesięcy. Myślę, że ktoś coś zmienił, ale nie mogę zrozumieć, co to jest.

Oto, co próbowałem:

  • Zaloguj się przy użyciu uwierzytelniania systemu Windows i zmiany hasła sa:

    sp_password NULL, newpassword, 'sa'

  • Włączanie logowania „sa”:

    ZMIEŃ LOGOWANIE jest WŁĄCZONE; PRZEJDŹ DO ZALOGUJ SIĘ Z HASŁEM = „nowe hasło”; UDAĆ SIĘ

  • Sprawdzono rejestr systemu Windows, aby upewnić się, że włączone jest uwierzytelnianie mieszane . Wartość była poprawna: LoginMode = 2

Co jeszcze powinienem sprawdzić? Z góry dziękuję.

DODATKOWE INFORMACJE:

To jest Windows 2003 Server. Mają włączone zasady haseł, pamiętam, że musiałem zmienić domyślne hasło „sa”, którego używa moja aplikacja, gdy instaluje SQL Server na innym, bardziej złożonym.

Łączę się za pomocą VNC, więc nie mogę tak naprawdę używać SSMS

Moja aplikacja może łączyć się przy użyciu innego logowania do SQL Server, ale bez „sa”

Wreszcie, jeśli nie znajdziemy rozwiązania, usunę tę instancję i ponownie ją zainstaluję, ale naprawdę chciałbym dowiedzieć się, na czym polega problem. Na wypadek, gdyby to się powtórzyło i dla czystej ciekawości.

ZĄBKOWAĆ
źródło

Odpowiedzi:

23

Jak powiedział @SpaceManSpiff, nie zapomnij sprawdzić, czy tryb mieszany jest włączony. Ktoś zmienił dla mnie to ustawienie i miałem ten sam problem. Oto jak to rozwiązać:

  1. Zaloguj się do MSSQL Server Management Studio z uwierzytelnianiem systemu Windows.
  2. W Eksploratorze obiektów SQL Server Management Studio kliknij prawym przyciskiem myszy serwer, a następnie kliknij polecenie Właściwości.
  3. W obszarze Właściwości serwera wybierz stronę „Bezpieczeństwo”.
  4. Wybierz opcję Uwierzytelnianie serwera jako „Tryb uwierzytelniania serwera SQL i Windows” i kliknij przycisk OK. Właściwości bazy danych zarządzania serwerem MSSQL
  5. Uruchom ponownie usługi SQL, a następnie spróbuj zalogować się przy użyciu szczegółów „sa”.

Źródło: http://forums.eukhost.com/f15/login-failed-user-sa-microsoft-sql-server-error-18456-a-12544/

Emanuel
źródło
12

Ok, byłem w stanie dowiedzieć się, co się dzieje (rodzaj) i udało mi się obejść.

Wygląda na to, że tydzień temu bawili się zasadami bezpieczeństwa systemu Windows. Dodawali / usuwali uprawnienia, ale nie mogą dać mi dokładnie tego, co zrobili, bo tak naprawdę nie wiedzieli (ouch!).

W każdym razie nawiązałem połączenie za pomocą uwierzytelniania systemu Windows (przełącznik -E) i uruchomiłem następujące zapytanie:

ALTER LOGIN [sa] WITH PASSWORD='newpassword', CHECK_POLICY=OFF
GO
ALTER LOGIN [sa] ENABLE
GO

Kluczem tutaj jest CHECK_POLICY = OFF . To załatwiło sprawę. Mam nadzieję, że dzięki temu będzie to odporne na przyszłe zmiany w konfiguracji domen.

Dziękujemy za wszystkie sugestie.

ZĄBKOWAĆ
źródło
6

Rzeczy do sprawdzenia

Hasło do konta SA

Tryb mieszany włączony

Czy konto SA jest wyłączone?

Utwórz kolejne konto SQL i wypróbuj je (ponieważ możesz uzyskać dostęp do opcji -E, możesz to zrobić)

Przetestuj za pomocą połączenia ODBC, możesz utworzyć to połączenie, aby sprawdzić, czy SA działa

Aha i zawsze łapię wszystko w systemie Windows, restartujemy (poważnie, to pomaga mojemu testowemu serwerowi SQL po tym, jak to zrobiłem)

SpaceManSpiff
źródło
1

Miałem ten problem kilka lat temu po zainstalowaniu Windows ServicePack (bez aktualizacji SQLServer, ale Windows), SQLServer odmawiał połączeń, dopóki SQLServer ServicePack nie został zainstalowany! Po kilku godzinach znalazłem wiadomość w dzienniku zdarzeń.

Myślę, że to zrobili, ponieważ wiedzieli, że istnieje duża dziura w zabezpieczeniach i chcieli zmusić wszystkich administratorów do zainstalowania pakietu. Ponieważ jednak minęło trochę czasu, nie znam dokładnych wersji i tak dalej. Polecam, dokładnie sprawdzasz dziennik zdarzeń i instalujesz wszystkie / najnowsze dodatki Service Pack.

Tim Büthe
źródło
To wygląda obiecująco, spróbuję w poniedziałek i zdam raport. Dzieki za sugestie.
JAG,
Wreszcie nie próbowałem instalować najnowszego dodatku Service Pack. Zobacz moją własną „zaakceptowaną odpowiedź”.
JAG,
0

Zakładając, że masz zainstalowane Management Studio lub Management Studio Express, czy możesz połączyć Management Studio z instancją za pomocą sa?

JR

John Rennie
źródło
1
SSMS nie jest zainstalowany i wolałbym go nie instalować, jeśli to możliwe. Ponadto połączenie z innego komputera za pomocą SSMS nie jest opcją, ponieważ jest to serwer klienta. Dostępne są tylko narzędzia wiersza poleceń.
JAG,
Jeśli masz Management Studio na innym komputerze, nawet jeśli znajduje się on na drugim końcu sieci VPN, nadal powinno być możliwe nawiązanie połączenia. Chodzi o to, aby sprawdzić, czy coś jest nie tak z konfiguracją serwera, czy też problem leży w poleceniu osql.
John Rennie,
0

Czy upewniłeś się, że ponownie uruchomiłeś usługę SQL Server po zmianie rejestru?

David Spillett
źródło
Nie musiałem go zmieniać, ponieważ miał poprawną wartość.
JAG,
0

Czy ktoś usunął bazę danych, która była domyślną bazą danych dla „sa”?

Jeśli to jest problem, spróbuj

EXEC sp_defaultdb 'sa', 'New default database'
splattne
źródło
Teoretycznie istnieje tylko jedna baza danych i istnieje. Jednak nie wykonałem tego polecenia.
JAG,
Zwykle jest to „master”. Ale myślę, że to nie jest problem ...
splattne
Właśnie próbowałem, ale nie zrobiłem różnicy. W każdym razie dzięki.
JAG,
0

Jeśli instalujesz SQL Express 2014, będziesz musiał zrobić kilka rzeczy, aby rozwiązać ten błąd, jeśli spróbujesz zalogować się przy użyciu konta [sa].

  1. Konto „sa” zostanie wyłączone. Musisz więc przełączyć konto z wyłączonego na włączone w sekcji stanu konta.

  2. Serwer musi mieć włączone uwierzytelnianie systemu Windows i serwera SQL. Domyślnie włączone jest tylko uwierzytelnianie systemu Windows.

  3. Zresetuj hasło (patrz kod poniżej; ServerFault ma błąd polegający na tym, że kod nie wyświetla się tak samo podczas korzystania z listy uporządkowanej na dzień 8.06.2016)

  4. Uruchom ponownie usługę Windows dla SQL Server

=========

ALTER LOGIN sa WITH PASSWORD='password', CHECK_POLICY=OFF;
ALTER LOGIN [sa] ENABLE;
MacGyver
źródło
0

Czasami logowanie jest wyłączone z powodu wielu niepoprawnych haseł lub naruszenia zasad. Możemy więc zalogować się przy użyciu uwierzytelniania okna, zmienić hasło i ponownie włączyć logowanie.

Zaloguj się do bazy danych za pomocą uwierzytelniania systemu Windows

Uruchom zapytanie:

ALTER LOGIN [sa] WITH PASSWORD='newpassword', CHECK_POLICY=OFF 
GO
ALTER LOGIN [sa] ENABLE
GO

Wymagane jest użycie CHECK_POLICY, ponieważ określa ono, że zasady haseł systemu Windows na komputerze, na którym działa program SQL Server, powinny być egzekwowane przy tym logowaniu. Domyślnie jest WŁĄCZONE, kiedy dokonamy WYŁ., Zmieni hasło bez żadnych trudności. Później możesz WŁĄCZYĆ

UWAGA: Zauważyłem, że gdy CHECK_POLICY jest w GUI, rozwiązania SSME do zmiany hasła nie będą działać za każdym razem. Nie jestem powodem, ale to zauważyłem.

Jay Patel
źródło
0

Rozwiązałem to w następujący sposób logowania za pomocą właściwości uwierzytelniania systemu Windows dla serwera >> Bezpieczeństwo i zmień uwierzytelnienie serwera

Preet Inder Singh
źródło
1
Czy mógłbyś wydać więcej na sformatowanie (i uzupełnienie) swojej odpowiedzi? Jak to jest napisane, niewiele pomaga.
asdmin