Uwaga: Oczywiście zmieniłem nazwy serwerów i adresy IP na fikcyjne.
Oto co się dzieje. Mam serwer, do którego dzwonię MYSERVER
, z programem Microsoft SQL Server Express 2005. Bezpośrednio na tym serwerze mam skonfigurowane połączenie ODBC wskazujące na siebie, które już działa idealnie. Loguję się przy użyciu uwierzytelniania programu SQL Server (nie uwierzytelniania systemu Windows), a konfiguracja jest następująca:
Tak jak powiedziałem, to działa. Ale potem mam inny komputer, który znajduje się w zupełnie innej domenie / nie w intranecie, który musi uzyskać dostęp do tego samego programu SQL Server hostowanego na MYSERVER. Ponieważ znajduje się w innej domenie, nie rozpoznaje nazwy „MYSERVER”; Muszę wskazać na adres IP MYSERVER, który powiemy 123.456.789.012. Ale połączenie ODBC nie wydaje się tam działać. Próbowałem skonfigurować to w następujący sposób:
To nie działa Po wpisaniu nazwy użytkownika i hasła i naciśnięciu przycisku Dalej blokuje się na dobre 10 do 20 sekund, a następnie w końcu powraca z następującym błędem:
Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.
Jeśli spróbuję tego samego, ale zmienię „serwer” 123.456.789.012\SQLEXPRESS
na zwykły 123.456.789.012
, otrzymuję inny błąd:
Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.
Teraz wiem, co myślisz. Być może myślisz: „och, prawdopodobnie nie otworzyłeś zapory dla portu 1433, manekinie”. Tyle że tak zrobiłem i zweryfikowałem to, ponieważ mogę pomyślnie uruchomić:
telnet 123.456.789.012 1433
... z wiersza poleceń wszystko, czego chcę. Więc nie jestem pewien, co robić. Wiem, że SQL Server istnieje, działa i można poprawnie skonfigurować połączenie ODBC ; Po prostu nie jestem pewien, co to jest, że pomyliłem się w ustawieniach połączenia, które powodują te błędy. W oparciu o ten drugi błąd, który wymieniłem, wydaje się, że może on połączyć się z serwerem, ale po prostu nie może znaleźć instancji (ponieważ nie określiłem go tym razem). Czy to oznacza, że po prostu muszę użyć innej składni, aby określić adres IP wraz z nazwą instancji? Co ja robię? Z góry dziękuję.
źródło
Czy włączyłeś usługę przeglądarki SQL Server zgodnie z instrukcją Jak skonfigurować program SQL Server 2005, aby zezwalał na połączenia zdalne ?
źródło
Ten wątek naprawił dla mnie ten sam komunikat o błędzie podczas używania programu Access do łączenia się z serwerem MSSQL 2008. MSSQL 2005 i wcześniejsze działały dobrze tylko przy użyciu nazwy komputera w ciągu połączenia, ale musiałem zmienić ciąg połączenia w programie Access na pełną formę, gdy instancja została uaktualniona do 2008 roku:
servername\instancename,portnumber
źródło
Miałem ten sam problem i udało mi się go rozwiązać, zmieniając sterownik SQL na sterownik SQL Native Client. To było dziwne, ponieważ w moim przypadku działało dobrze od lat, a potem po prostu przestało działać. Podejrzewam, że jest to coś w rodzaju uszkodzenia sterownika, być może może pomóc ponowna instalacja MDAC, ale na razie cieszę się, że w ogóle działa!
źródło
Czy rozpoznałby nazwę serwera, gdyby był w pełni kwalifikowany? Gdyby to był MYSERVER.domain.com? Musieliśmy to zrobić z programem SQL Server podczas łączenia się z innej domeny. Jeśli możesz uzyskać połączenie DSN z systemem ODBC podczas testowania źródła danych, robisz postępy. Jeśli nie łączy się w konfiguracji ODBC, musisz to najpierw naprawić.
źródło
MYSERVER.domain.com\SQLEXPRESS
iMYSERVER.domain.com
, ale oba dały mi te same błędy, które wymieniłem powyżej.Czy używasz nazwanych potoków lub TCP na działającym połączeniu ODBC? Czy protokół TCP jest włączony?
źródło
Upewnij się, że masz włączone zdalne połączenia TCP dla serwera SQL.
źródło
Dziki strzał tutaj, ale co się stanie, jeśli umieścisz podwójny ukośnik przed nazwą serwera lub adresem IP? Wydaje mi się, że jest to normalnie wymagane w przypadku większości innych połączeń Windows / Microsoft.
źródło
Miałem podobny problem. W moim przypadku inny sw konfiguruje ustawienia ODBC, więc nie mogę zmienić sterownika. Rozwiązałem moją sprawę w ten sposób:
Potem zaczęło działać. System operacyjny klienta: Win7 x64 Driver: sqlsrv32.dll
źródło
Za to, co jest warte, zacząłem otrzymywać ten błąd w połączeniu, które wcześniej działało. Okazało się, że usługa MSSQL $ SQLEXPRESS została jakoś zatrzymana. Ponowne uruchomienie rozwiązało problem.
źródło
Miałem również ten problem i było to tak proste: serwer wymieniony jako podstawowy serwer DNS dla tego serwera został usunięty, a aplikacja nie była już w stanie poprawnie rozpoznać nazwy serwera SQL w sieci. Wszystko natychmiast zaczęło działać ponownie, kiedy poprawiłem lokalny serwer DNS na działający.
źródło