Nie mogę połączyć się z bazą danych SQL moich serwerów za pomocą adresu IP

45

Mam skonfigurowany serwer z systemem Windows Server 2008 i zainstalowany program SQL Server 2008 Express.

Mogę połączyć się z bazą danych SQL Server Express maszyny za pośrednictwem MACHINENAME/SQLEXPRESS.

Jednak gdy dojdziemy do połączenia za pomocą dowolnego oprogramowania lub skryptu za pomocą adresu IP, połączenie nie będzie możliwe.

Próbowałem:

  • Wyłączanie zapory.
  • Zezwalanie na zdalne połączenia z bazą danych SQL.
  • Włączanie TCP / IP w konfiguracji SQL.

Podczas próby połączenia za pomocą oprogramowania „SQL Server Management Studio” otrzymujemy następujący komunikat:

Komunikat o błędzie:

Wystąpił błąd podczas nawiązywania połączenia z serwerem. Podczas łączenia z SQL Server 2005 ten błąd może być spowodowany tym, że w ustawieniach domyślnych SQL Server nie zezwala na połączenia zdalne. (dostawca: Dostawca TCP, błąd: 0 - Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.) (Microsoft SQL Server, Błąd: 10061)

Połączenie z serwerem powiodło się, ale wystąpił błąd podczas procesu logowania. (dostawca: Dostawca TCP, błąd: 0 - Oprogramowanie na twoim komputerze hosta zostało przerwane). (Microsoft SQL Server, błąd: 10053)

Czy możesz dać mi znać, kiedy jesteś za darmo, abyśmy mogli rzucić okiem, ponieważ wydaje mi się, że się dowiem, skorygowałem szczegóły zgodnie z niektórymi informacjami przesłanymi mi przez UK Fast, ale powiedzieli: „To nie wchodzi w zakres wsparcia” , więc nie mogą już pomóc.

Czekam na wiadomość od ciebie.

Shaun Swales
źródło
Czy próbowałeś dołączyć numer portu podczas łączenia?
Czy próbujesz połączyć się z „192.168.0.1/SQLEXPRESS” (gdzie 192.168.0.1 to tak naprawdę adres IP twojego serwera ), czy pomijasz nazwę instancji?
Rowland Shaw
2
Czy naprawdę używasz ukośnika, /a nie ukośnika `\?
Aaron Bertrand

Odpowiedzi:

78

Twój SQL Server jest zainstalowany jako wystąpienie nazwane, więc przede wszystkim spróbuj połączyć się z serwerem przy użyciu następującej nazwy serwera: IP Address\SQLEXPRESS.
Podczas instalowania programu SQL Server jako instancji nazwanej domyślnie korzysta on z dynamicznych portów TCP / IP, więc nie można połączyć się z nim bez podania nazwy instancji (tylko adres IP). Jeśli chcesz połączyć się z serwerem bez użycia nazwy instancji, musisz ponownie skonfigurować serwer, aby używał statycznego portu TCP. Aby to zrobić, wykonaj następujące czynności:

  1. otwórz SQL Server Configuration Manager;
  2. przejdź do SQL Server Network Configuration | Protocols for SQLEXPRESS;
  3. kliknij dwukrotnie TCP/IPprotokół;
  4. wybierz Yeswartość w Enabledpolu;
  5. przejdź do IP Addresseszakładki;
  6. znajdź IPAllsekcję;
  7. wyczyść TCP Dynamic Portspole w tej sekcji;
  8. podaj 1433wartość w TCP Portpolu:
    wprowadź opis zdjęcia tutaj
  9. zrestartuj serwer
    Spróbuj połączyć się z serwerem, używając tylko jego adresu IP.
levitologista
źródło
7
Dziękujemy za podanie tych informacji. Działa dobrze, z wyjątkiem jednej rzeczy. W SQL Management Studio nadal muszę podać port, aby połączyć się z serwerem, np. Xxxx \ instance, 1433. Myślę, że to trochę dziwne, ponieważ używam standardowego portu.
Tomas Jansson
1
Działa to dla mnie, z wyjątkiem dokładnie tego, co zgłosił @TomasJansson: działa w Management Studio bez numeru portu, ale muszę podać jeden w ciągu połączenia, nawet jeśli używam domyślnego portu (1433).
lpacheco
Uzupełniając powyższą doskonałą odpowiedź, w SQL Server 2017 zdałem sobie sprawę, że nie można pozostawić pustego pola hasła użytkownika (szczególnie sa). Upewnij się, że masz ustawione hasło - w przeciwnym razie połączenie się nie nawiąże.
aLearner
UŻYJ polecenia netstat -a -b i znajdź plik sqlservr.exe i upewnij się, że port to 1433. Nie zawsze tak jest. W przeciwnym razie oszalejesz.
jwize
8

Powinieneś włączyć, śledząc dla mnie problem rozwiązany, włączając śledzenie i restartowanie wszystkich usług.

  • Pamięć współdzielona
  • TCP / IP
  • Nazwane potoki

Nazwane potoki konfiguracji programu SQL Server

Baljeetsingh
źródło
8

Korzystając z programu SQL Server Express 2017, oprócz powyższych odpowiedzi, podczas próby połączenia za pomocą portu upewnij się, że używasz składni przecinków , a nie dwukropków, tj .:

 MyServerName,1433\InstanceName

Po kilku godzinach zmagania się z powyższym, zgodnie ze wszystkimi sugestiami i nadal się nie łączyłem, użyłem powyższego, a on zdalnie połączył się za pośrednictwem SQL Server Management Studio. Pierwszy krok do sukcesu.

Ćwiek
źródło
1
Naprawiłem to dla mnie (przenoszenie portu między nazwą serwera a nazwą instancji). Wejście do portu na końcu nie działało.
masospaghetti
1

Byłem w stanie połączyć się zdalnie poprzez jawne określenie dynamicznego numeru portu, ale oczywiście nie jest to idealne.

Wygląda na to, że problem polegał na tym, że usługa przeglądarki SQL Server została wyłączona. Po włączeniu i uruchomieniu tej usługi byłem w stanie połączyć się zdalnie, po prostu podając nazwę hosta i nazwę instancji.

RobSiklos
źródło
0

Po prostu dodając do tego, co zostało wcześniej powiedziane. Miałem ten sam problem, że nie mogłem połączyć się z serwerem (klientem i serwerem na tym samym pulpicie) i przeszedłem wszystkie kroki wymienione tutaj, próbując to naprawić. Jednak w końcu dowiedziałem się, na czym polega problem. Wszystko, co musiałem zrobić, to przejść do studia zarządzania serwerem SQL i kliknąć „Usługi serwera SQL”, a następnie kliknąć jeden raz serwer, z którym musiałem się połączyć. Następnie kliknij zielony przycisk „Uruchom”. Nie jestem pewien, czy było to specyficzne dla mnie, ponieważ mój komputer zarówno działał, jak i uzyskiwał dostęp do serwera, mam nadzieję, że pomoże to każdemu innemu!

Gdzie znajduje się przycisk uruchamiania / uruchamiania

Kuolema
źródło
1
jak, u licha, ten komentarz był tak niedoceniany? proste i naprawione mój problem
Cavid Hummatov