Mam projekt Visual Studio C++ (niezarządzanego C++), w którym próbuję połączyć się z wystąpieniem programu SQL Server 2008 na innym komputerze w sieci LAN. . IP Moje ciąg połączenia jest:Błąd programu SQL Server 2008 18456 stan 58, Logowanie nie powiodło się dla użytkownika "
"DRIVER={SQL Server Native Client 10.0};Server=tcp:169.254.204.232,1433;Network Library=DBMSSOCN;Initial Catalog=myDB;User ID=myDBUser;Password=myPassword;"
ważny fakt: jestem w stanie z powodzeniem połączyć się zdalnie do tej instancji z identyfikatora użytkownika i hasła mojehasło myDBUser za pomocą SSMS - Korzystanie z trybu uwierzytelniania SQL (i określając TCP/IP w opcjach połączeń)! Również po zalogowaniu mogę z powodzeniem nawigować po bazie danych myDB
Tak, mam włączone uwierzytelnianie w trybie mieszanym na moim serwerze.
Należy również zauważyć, że ten sam kod został pomyślnie nawiązany, gdy moje wystąpienie było lokalne i korzystałem z uwierzytelniania systemu Windows. Innymi słowy, to, co zmieniło się od czasu ostatniej pracy, polega na tym, że przeniosłem swój serwer na inną maszynę, używam teraz uwierzytelniania SQL i dlatego zmieniłem ciąg połączenia - kod w ogóle się nie zmienił.
Oto komunikat o błędzie pojawia się w moim SQL Server 2008 logów serwera instancji:
Logowanie nie powiodło się dla użytkownika”. Powód:.. Próba logowania przy użyciu uwierzytelniania SQL udało Server jest skonfigurowany dla uwierzytelniania tylko systemu Windows błąd: 18456, Severity: 14, State: 58.
Zauważ, że użytkownik jest cytowany w tym komunikacie o błędzie jest pusty, choć w moim ciąg połączenia określić niepuste identyfikator użytkownika
innego połączenia. łańcuchy próbowałem, które dają taki sam wynik:
"DRIVER={SQL Server Native Client 10.0};Server=MACHINE2;Database=myDB;User ID=myDBUser;Password=myPassword;" (where MACHINE2 is the windows name of the machine hosting the sql server instance.)
Nie określam nazwy instancji w powyższym łańcuchu połączenia, ponieważ moja instancja jest instalowana jako instancja domyślna, a nie nazwana.
Wszelkie pomysły na rozwiązanie tego problemu?
AKTUALIZACJA: Rozwiązałem ten problem, jak się wydaje. Czy jesteś gotowy, aby dowiedzieć się, jak głupio i całkowicie nie ma związku ten komunikat o błędzie? W ciągu połączenia właśnie zmieniłem "User ID" na "uid" i "Password" na "pwd", a teraz to działa. Teraz widzę komunikat "Połączono pomyślnie" w dziennikach serwera SQL Server ...
Podajesz, że masz włączone uwierzytelnianie w trybie mieszanym, ale komunikat o wyjątku wyraźnie stwierdza inaczej. Czy nastąpiło ponowne uruchomienie od czasu zmiany trybu uwierzytelniania? Zobacz ten post: http://stackoverflow.com/questions/8441158/an-attempt-to-login-using-sql-authentication-failed – Jacco