Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z programem SQL Server

Dotyczy: SQL Server

Podczas nawiązywania połączenia z wystąpieniem SQL Server może wystąpić co najmniej jeden z następujących komunikatów o błędach. Ten artykuł zawiera kilka kroków ułatwiających rozwiązywanie tych błędów, które są udostępniane w kolejności od prostych do złożonych.

Komunikaty o błędach

Kompletne komunikaty o błędach różnią się w zależności od biblioteki klienta używanej w aplikacji i środowisku serwera. Możesz sprawdzić następujące szczegóły, aby upewnić się, czy napotykasz jeden z następujących komunikatów o błędach:

dostawca: Dostawca nazwanych potoków, błąd: 40 — nie można otworzyć połączenia z SQL Server (Microsoft SQL Server, błąd: 53) Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z programem SQL Server. Serwer nie został znaleziony lub jest niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy SQL Server jest skonfigurowany do zezwalania na połączenia zdalne.
dostawca: dostawca nazwanych potoków, błąd: 40 — nie można otworzyć połączenia z SQL Server (Microsoft SQL Server, błąd: 53)
dostawca: dostawca TCP, błąd: 0 — taki host nie jest znany. (System Microsoft SQL Server Compact, błąd: 11001)

dostawca: Interfejsy sieciowe SQL, błąd: 26 — błąd podczas lokalizowania określonego serwera/wystąpienia Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z programem SQL Server. Serwer nie został znaleziony lub jest niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy SQL Server jest skonfigurowany do zezwalania na połączenia zdalne.
dostawca: interfejsy sieciowe SQL, błąd: 26 — błąd podczas lokalizowania określonego serwera/wystąpienia

Limit czasu logowania wygasł Błąd linku danych klienta natywnego programu SQL Server
[Microsoft SQL Server Native Client 10.0]: Limit czasu logowania wygasł
[Microsoft SQL Server Native Client 10.0]: Wystąpił błąd związany z siecią lub wystąpieniem podczas nawiązywania połączenia z SQL Server. Serwer nie został znaleziony lub jest niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy program SQL Server jest skonfigurowany do zezwalania na połączenia zdalne. Aby uzyskać więcej informacji, zobacz SQL Server Books Online.
[Microsoft SQL Server Native Client 10.0]: SQL Server interfejsy sieciowe: błąd podczas lokalizowania określonego serwera/wystąpienia [xFFFFFFFF].

Próba połączenia nie powiodła się, ponieważ połączona strona nie odpowiedziała prawidłowo po upływie określonego czasu lub nawiązane połączenie nie powiodło się, ponieważ połączony host nie odpowiedział Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z programem SQL Server. Serwer nie został znaleziony lub jest niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy SQL Server jest skonfigurowany do zezwalania na połączenia zdalne.
dostawca: dostawca TCP, błąd: 0
Próba połączenia nie powiodła się, ponieważ połączona strona nie odpowiedziała prawidłowo po upływie określonego czasu lub nawiązane połączenie nie powiodło się, ponieważ połączony host nie odpowiedział.
System Microsoft SQL Server, błąd: 10060

dostawca: Nazwany dostawca potoków, błąd: 40 — nie można otworzyć połączenia z SQL Server Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z programem SQL Server. Serwer nie został znaleziony lub jest niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy SQL Server jest skonfigurowany do zezwalania na połączenia zdalne.
dostawca: nazwany dostawca potoków, błąd: 40 — nie można otworzyć połączenia z SQL Server
System Microsoft SQL Server, błąd: 53
Nie odnaleziono ścieżki sieciowej

[Microsoft] [SQL Server Native Client 11.0]Dostawca TCP: nie można nawiązać połączenia, ponieważ maszyna docelowa aktywnie go odmówiła Błąd linku danych klienta natywnego programu SQL Server
[Microsoft] [SQL Server Native Client 11.0]Dostawca TCP: nie można nawiązać połączenia, ponieważ maszyna docelowa aktywnie go odmówiła.
[Microsoft] [SQL Server Native Client 11.0]Limit czasu logowania wygasł.
[Microsoft][SQL Server Native Client 11.0]Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z programem SQL Server. Serwer nie został znaleziony lub jest niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy program SQL Server jest skonfigurowany do zezwalania na połączenia zdalne. Aby uzyskać więcej informacji, zobacz SQL Server Books Online.

„SQL Server nie istnieje lub odmowa dostępu”

Ten błąd zwykle oznacza, że klient nie może znaleźć wystąpienia SQL Server. Przyczyny występowania tego problemu mogą być następujące:

  • Nazwa komputera hostującego SQL Server jest niepoprawna.
  • Wystąpienie nie rozpoznaje poprawnego adresu IP.
  • Numer portu TCP nie jest poprawnie określony.

Uwaga

Aby rozwiązać problemy z łącznością w scenariuszach wysokiej dostępności, zobacz następujące artykuły:

Błąd systemu Windows 233: Żaden proces nie znajduje się na drugim końcu potoku

Pełny komunikat:

Połączenie z serwerem zostało pomyślnie nawiązane, ale wystąpił błąd podczas procesu logowania. (dostawca: Dostawca pamięci współdzielonej, błąd: 0 — żaden proces nie znajduje się na drugim końcu potoku). (Microsoft SQL Server, błąd: 233)

Ten komunikat oznacza, że SQL Server nie nasłuchuje w protokole Pamięć udostępniona ani Nazwane potoki.

Zbieranie informacji dotyczących rozwiązywania problemów z błędem

Zalecamy zebranie informacji wymienionych w tej sekcji przy użyciu jednej z następujących opcji przed wykonaniem rzeczywistych kroków rozwiązywania problemów z błędem.

Opcja 1. Użyj narzędzia SQL Check, aby zebrać wymagane informacje

Jeśli możesz zalogować się lokalnie na komputerze SQL Server i mieć dostęp administratora, użyj programu SQLCHECK. To narzędzie zawiera większość informacji wymaganych do rozwiązywania problemów w jednym pliku. Przejrzyj stronę główną narzędzia, aby uzyskać więcej informacji na temat korzystania z narzędzia i zbieranych informacji. Możesz również sprawdzić zalecane wymagania wstępne i stronę listy kontrolnej.

Opcja 2. Zbieranie danych indywidualnie przy użyciu następujących procedur

Pobieranie nazwy wystąpienia z Configuration Manager

Na serwerze hostującym wystąpienie SQL Server użyj SQL Server Configuration Manager, aby zweryfikować nazwę wystąpienia:

Uwaga

Configuration Manager jest automatycznie instalowany na komputerze po zainstalowaniu SQL Server. Instrukcje dotyczące uruchamiania Configuration Manager różnią się nieco w zależności od posiadanej wersji SQL Server i systemu Windows. Aby uzyskać szczegółowe informacje dotyczące wersji, zobacz SQL Server Configuration Manager.

  1. Zaloguj się do komputera hostującego wystąpienie SQL Server.

  2. Uruchom program SQL Server Configuration Manager.

  3. W lewym okienku kliknij pozycję SQL Server Services.

  4. W okienku po prawej stronie sprawdź nazwę wystąpienia aparatu bazy danych.

    • Program SQL SERVER (MSSQLSERVER) wskazuje domyślne wystąpienie SQL Server. Nazwa wystąpienia domyślnego to <nazwa> komputera.
    • PROGRAM SQL SERVER (<nazwa> wystąpienia) wskazuje nazwane wystąpienie SQL Server. Nazwa nazwanego wystąpienia to <nazwa> komputera\<nazwa> wystąpienia.

Uzyskaj adres IP serwera

Poniższe kroki umożliwiają uzyskanie adresu IP komputera hostującego wystąpienie SQL Server.

  1. W menu Start wybierz pozycję Uruchom. W polu Uruchom wpisz polecenie cmd, a następnie kliknij przycisk OK.

  2. W oknie Wiersz polecenia wpisz ciąg ipconfig/all, a następnie naciśnij klawisz Enter. Zanotuj adres IPv4 i adres IPv6.

    Uwaga

    Program SQL Server może nawiązać połączenie przy użyciu protokołu IP w wersji 4 lub protokołu IP w wersji 6. Sieć może zezwalać na dowolną lub obie te opcje.

Uzyskiwanie portu TCP wystąpienia

W większości przypadków połączenie nawiązywane jest z aparatem bazy danych na innym komputerze przy użyciu protokołu TCP. Aby uzyskać port TCP wystąpienia, wykonaj następujące kroki:

  1. Użyj programu SQL Server Management Studio na komputerze z systemem SQL Server i połącz się z wystąpieniem SQL Server. W narzędziu Eksplorator obiektów rozwiń węzeł Zarządzanie, rozwiń węzeł Dzienniki SQL Server, a następnie kliknij dwukrotnie bieżący dziennik.

  2. W Podglądzie plików dziennika wybierz pozycję Filtruj na pasku narzędzi. W polu Komunikat zawiera tekst wpisz serwer nasłuchuje na, wybierz pozycję Zastosuj filtr, a następnie wybierz przycisk OK.

  3. Powinien zostać wyświetlony komunikat taki jak "Serwer nasłuchuje na [ 'any' <ipv4> 1433]".

    Ten komunikat wskazuje, że wystąpienie SQL Server nasłuchuje na wszystkich adresach IP na tym komputerze (dla adresu IP w wersji 4) i portu TCP 1433. (Port TCP 1433 jest zwykle portem używanym przez aparat bazy danych lub domyślne wystąpienie SQL Server. Z tego portu może korzystać tylko jedno wystąpienie SQL Server. Jeśli zainstalowano więcej niż jedno wystąpienie SQL Server, niektóre wystąpienia muszą używać innych numerów portów). Zanotuj numer portu używany przez wystąpienie SQL Server, z którym próbujesz nawiązać połączenie.

    Uwaga

    • Prawdopodobnie jest wyświetlany adres IP 127.0.0.1. Jest on nazywany adresem karty sprzężenia zwrotnego. Tylko procesy na tym samym komputerze mogą używać adresu IP do nawiązania połączenia.
    • Dziennik błędów SQL Server można również wyświetlić za pomocą edytora tekstów. Domyślnie dziennik błędów znajduje się w Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG i plikach ERRORLOG.n. Aby uzyskać więcej informacji, zobacz Wyświetlanie dziennika błędów SQL Server.

Krok 1. Sprawdzanie, czy wystąpienie jest uruchomione

Opcja 1. Użyj pliku wyjściowego SQLCHECK

  1. Search pliku wyjściowego SQLCHECK "SQL Server Information".
  2. W sekcji zatytułowanej „Usługi zainteresowania” znajdź wystąpienie SQL Server w kolumnach Nazwa i Wystąpienie (dla nazwanych wystąpień), a następnie sprawdź jego stan przy użyciu kolumny Rozpoczęto. Jeśli wartość to True, usługi są uruchamiane. W przeciwnym razie usługa nie jest obecnie uruchomiona.
  3. Jeśli usługa nie jest uruchomiona, uruchom usługę przy użyciu programu SQL Server Management Studio, programu SQL Server Configuration Manager, programu PowerShell lub apletu Usługi.

Opcja 2. Użycie programu SQL Server Configuration Manager

Aby sprawdzić, czy wystąpienie jest uruchomione, wybierz pozycję SQL Server Services w programie SQL Server Configuration Manager i sprawdź symbol w wystąpieniu SQL Server.

  • Zielona strzałka wskazuje, że wystąpienie jest uruchomione.
  • Czerwony kwadrat wskazuje, że wystąpienie zostało zatrzymane.

Jeśli wystąpienie zostanie zatrzymane, kliknij prawym przyciskiem myszy wystąpienie i wybierz pozycję Uruchom. Następnie zostanie uruchomione wystąpienie serwera, a wskaźnik stanie się zieloną strzałką.

Opcja 3. Użycie poleceń programu PowerShell

Aby sprawdzić stan usług SQL Server w systemie, możesz użyć następującego polecenia w programie PowerShell:

Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -like "sql server*"}

Za pomocą następującego polecenia można wyszukać w pliku dziennika błędów określony ciąg „Program SQL Server jest teraz gotowy do połączeń klienckich. Jest to komunikat informacyjny; żadna akcja użytkownika nie jest wymagana.”:

Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog | Select-String "SQL Server is now ready for client connections."

Krok 2. Sprawdź, czy usługa Przeglądarka SQL Server jest uruchomiona

Uwaga

Ten krok jest wymagany tylko do rozwiązywania problemów z łącznością z nazwanymi wystąpieniami.

Opcja 1. Użyj pliku wyjściowego SQLCHECK

  1. Search pliku wyjściowego SQLCHECK "SQL Server Information".
  2. W sekcji zatytułowanej „Usługi zainteresowania” wyszukaj ciąg SQLBrowser w kolumnie Nazwa i sprawdź jego stan przy użyciu kolumny Rozpoczęto. Jeśli wartość to True, usługa zostanie uruchomiona. W przeciwnym razie usługa nie jest obecnie uruchomiona i należy ją uruchomić. Aby uzyskać więcej informacji, zobacz Uruchamianie, zatrzymywanie, wstrzymywanie, wznawianie, ponowne uruchamianie usług SQL Server.

Opcja 2. Użycie programu SQL Server Configuration Manager

Aby nawiązać połączenie z nazwanym wystąpieniem, musi być uruchomiona usługa Przeglądarka SQL Server. W programie SQL Server Configuration Manager znajdź usługę Przeglądarka SQL Server i sprawdź, czy jest uruchomiona. Jeśli nie jest uruchomiona, uruchom usługę. Usługa Przeglądarka SQL Server nie jest wymagana w przypadku wystąpień domyślnych.

Aby uzyskać więcej informacji na temat korzystania z usługi Przeglądarka SQL Server w środowisku, zobacz Usługa Przeglądarka SQL Server.

Aby uzyskać więcej informacji na temat zatrzymywania i uruchamiania usług SQL, zobacz Uruchamianie, zatrzymywanie, wstrzymywanie, wznawianie, ponowne uruchamianie usług SQL Server.

Uwaga

Jeśli nie ma możliwości uruchomienia usługi Przeglądarka SQL Server, zobacz Nawiązywanie połączenia z wystąpieniem o nazwie programu SQL Server bez korzystania z usługi Przeglądarka SQL Server.

Krok 3. Weryfikowanie nazwy serwera w parametrach połączenia

Często występują błędy, gdy w parametrach połączenia określono nieprawidłową nazwę serwera. Upewnij się, że nazwa serwera jest zgodna z nazwą pobraną w poprzednich krokach.

Uwaga

Jeśli używasz narzędzia SQLCHECK, przejrzyj wartości NetBios Name/FQDN w sekcji Informacje o komputerze pliku wyjściowego.

Krok 4: Weryfikowanie aliasów na komputerze klienta

Aliasy są często używane w środowiskach klienckich podczas nawiązywania połączenia z SQL Server o alternatywnej nazwie lub w przypadku problemów z rozpoznawaniem nazw w sieci. Są one tworzone przy użyciu SQL Server Configuration Manager lub narzędzia sieciowego klienta. Nieprawidłowy alias może spowodować, że połączenia z aplikacji połączą się z niewłaściwym serwerem, co spowoduje niepowodzenie. Aby sprawdzić, czy występują nieprawidłowe aliasy, wykonaj poniższe czynności. Możesz również użyć narzędzia (takiego jak SQLCHECK) na komputerze klienta, aby sprawdzić aliasy i różne inne ustawienia związane z łącznością.

Uwaga

Poniższe opcje dotyczą tylko aplikacji, które używają natywnego klienta SQL Server do nawiązywania połączenia z SQL Server.

Opcja 1. Użyj pliku wyjściowego SQLCHECK

  1. W pliku wyjściowym SQLCHECK wyszukaj ciąg Aliasy SQL. (Ten ciąg znajduje się w sekcji Zabezpieczenia klienta i informacje o sterowniku tego pliku)
  2. Przejrzyj wpisy w tabeli. Jeśli nie ma żadnych, na komputerze nie ma aliasów. Jeśli istnieje wpis, przejrzyj informacje, aby upewnić się, że nazwa serwera i numer portu są ustawione na prawidłowe wartości.

Przykładowe dane wyjściowe:
Aliasy SQL:

Alias Name   Protocol   Server Name     Port   32-bit 

----------   --------   ------------    ----   ------ 

prodsql      TCP        prod_sqlserver  1430      

Dane wyjściowe wskazują, że jest to prodsql alias SQL Server o nazwie prod_sqlserver uruchomionej na porcie 1430.

Opcja 2. Sprawdzanie aliasów w programie SQL Server Configuration Manager

  1. W programie SQL Server Configuration Manager rozwiń węzeł Konfiguracja klienta natywnego SQL Server i wybierz pozycję Aliasy.

  2. Sprawdź, czy dla serwera, z którym próbujesz nawiązać połączenie, zdefiniowano aliasy.

    Jeśli aliasy istnieją, wykonaj następujące kroki:

    1. Otwórz okienko Właściwości aliasu.
    2. Zmień nazwę wartości w polu Nazwa aliasu (na przykład jeśli nazwa serwera to MySQL, zmień jej nazwę na MySQL_test) i spróbuj ponownie nawiązać połączenie. Jeśli połączenie działa, alias jest niepoprawny i może pochodzić ze starej konfiguracji, która nie jest już potrzebna. Jeśli połączenie nie działa, zmień nazwę aliasu z powrotem na jego oryginalną nazwę i przejdź do następnego kroku.
    3. Sprawdź parametry połączenia aliasu i upewnij się, że są poprawne. Następujące typowe scenariusze mogą powodować problemy z łącznością:
      • Nieprawidłowy adres IP pola Serwer. Upewnij się, że adres IP jest zgodny z wpisem w pliku dziennika błędów SQL Server.
      • Nieprawidłowa nazwa serwera w polu Serwer. Na przykład alias serwera wskazuje poprawną nazwę serwera. Jednak połączenia nie powiedzie się, jeśli wartość parametru nazwy serwera jest nieprawidłowa.
      • Nieprawidłowy format nazwy potoku (przy założeniu, że używasz aliasu nazwanych potoków).
        • Podczas nawiązywania połączenia z wystąpieniem domyślnym o nazwie Mydefaultinstance nazwa potoku powinna być \\Mydefaultinstance\pipe\sql\query.
        • Podczas nawiązywania połączenia z nazwanym wystąpieniem MySQL\Named nazwa potoku powinna mieć nazwę \\MySQL\pipe\MSSQL$Named\sql\query.

Opcja 3. Sprawdzanie aliasów w narzędziu sieciowym klienta SQL Server

  1. Otwórz Narzędzie sieciowe klienta SQL Server, wpisując ciąg cliconfg.exe w poleceniu Uruchom.
  2. Wykonaj krok 2 w opcji 2: sprawdzanie aliasów w programie SQL Server Configuration Manager.

Krok 5. Weryfikowanie konfiguracji zapory

Konfigurację zapory można sprawdzić w zależności od wystąpienia domyślnego lub wystąpienia nazwanego.

Uwaga

Jeśli używasz zapór innych firm w sieci, założenia te nadal obowiązują. Może jednak być konieczne skontaktowanie się z administratorem sieci lub zapoznanie się z dokumentacją produktu zapory, aby uzyskać więcej informacji na temat konfigurowania zapory w celu umożliwienia niezbędnych portów do komunikacji z SQL Server.

Domyślne wystąpienie SQL Server

Domyślne wystąpienie jest zwykle uruchamiane na porcie 1433. Niektóre instalacje używają również portu niestandardowego (innego niż 1433) do uruchamiania wystąpień SQL. Zapora może blokować dowolny port. Aby dokładnie sprawdzić numer portu, wykonaj następujące czynności:

  1. Określ port, na który jest uruchomione wystąpienie SQL, zobacz Uzyskiwanie portu TCP wystąpienia.
    • Jeśli SQL Server jest skonfigurowany do nasłuchiwania na porcie 1433, upewnij się, że zapory w sieci między klientem a serwerem zezwalają na ruch na tym porcie. Zapoznaj się z tematem Konfigurowanie zapory systemu Windows na potrzeby dostępu do aparatu bazy danych i współpracuj z administratorem sieci w celu zaimplementowania niezbędnych rozwiązań.
    • Jeśli domyślne wystąpienie SQL Server nie używa wartości 1433, spróbuj dołączyć numer portu SQL Server do nazwy serwera przy użyciu formatu <servername>,<portnumber> i sprawdź, czy działa. Na przykład nazwa wystąpienia SQL to MySQLDefaultinstance i jest uruchomiona na porcie 2000. Określ nazwę serwera na MySQLServer, 2000 i sprawdź, czy działa.
      • Jeśli to nie zadziała, oznacza to, że zapora blokuje port. Aby dodać port do listy wykluczeń zapory, możesz wykonać instrukcje opisane w artykule Konfigurowanie zapory systemu Windows na potrzeby dostępu do aparatu bazy danych lub we współpracy z administratorem sieci.
      • Jeśli działa, oznacza to, że zapora zezwala na komunikację za pośrednictwem tego portu. Aby użyć numeru portu i nazwy serwera w parametrach połączenia aplikacji, należy zmienić parametry połączenia.

Nazwane wystąpienie SQL Server

Jeśli wystąpienie SQL jest wystąpieniem nazwanym, może być skonfigurowane do używania portów dynamicznych lub portu statycznego. W obu przypadkach podstawowe biblioteki sieciowe wysyłają zapytanie do usługi Przeglądarka SQL Server uruchomionej na komputerze z programem SQL Server za pośrednictwem portu UDP 1434 w celu wyliczenia numeru portu dla nazwanego wystąpienia. Jeśli zapora między klientem a serwerem blokuje ten port UDP, biblioteka klienta nie może określić portu (wymaganie połączenia) i połączenie zakończy się niepowodzeniem. Aby sprawdzić połączenie, zastosuj jedną z następujących metod:

  • Metoda 1. Sprawdź połączenie, określając numer portu w parametrach połączenia.

    1. Określ port, na który jest uruchomione wystąpienie SQL, zobacz Uzyskiwanie portu TCP wystąpienia.
    2. Spróbuj nawiązać połączenie z nazwanym wystąpieniem przy użyciu numeru portu dołączonego do nazwy serwera w formacie <servername\instancename>,<portnumber> i sprawdź, czy to zadziała. Jeśli na przykład nazwa wystąpienia SQL to MySQL\Namedinstance i jest uruchomiona na porcie 3000, określ nazwę serwera MySQL\Namedinstance,3000.
      • Jeśli to działa, oznacza to, że zapora blokuje port UDP 1434 lub wystąpienie jest ukryte przed usługą Przeglądarka SQL Server.
      • Jeśli to nie zadziała, oznacza to jedną z następujących sytuacji:
        • Zablokowany jest Port UDP 1434, port statyczny lub blokowane są oba te porty. Aby potwierdzić, czy jest to port UDP, czy port statyczny, użyj narzędzia Portqry.
        • Wystąpienie jest ukryte przed usługą Przeglądarka SQL Server Browser.
  • Metoda 2. Sprawdzanie połączenia przy użyciu narzędzia PortQryUI.

    Użyj narzędzia PortQryUI z nazwanym wystąpieniem i obserwuj wynikowe dane wyjściowe. Może zostać wyświetlony komunikat, że port UDP 1434 jest filtrowany. Ten komunikat wskazuje, że port jest zablokowany w sieci. Aby uzyskać instrukcje dotyczące korzystania z narzędzia, zobacz Używanie narzędzia PortQryUI z programem SQL Server.

    Sprawdzanie, czy program SQL Server nasłuchuje na portach dynamicznych czy statycznych. Następnie użyj następującej metody, która jest istotna dla danego scenariusza. Jeśli nie masz pewności, zobacz Jak sprawdzić, czy SQL Server nasłuchuje na porcie dynamicznym lub porcie statycznym.

    • Scenariusz 1. Porty dynamiczne. W takim przypadku upewnij się, że usługa Przeglądarka SQL Server została uruchomiona, a port UDP 1434 nie jest zablokowany w zaporze między klientem a serwerem. Jeśli nie możesz wykonać żadnej z tych czynności, przełącz wystąpienie SQL Server na port statyczny i użyj procedury opisanej w artykule Konfigurowanie serwera do nasłuchiwania na określonym porcie TCP.
    • Scenariusz 2. Konfiguracja portu statycznego. Usługa Przeglądarka SQL Server nie jest uruchomiona lub nie można otworzyć protokołu UDP 1434 w zaporze. W takim przypadku należy określić port statyczny w parametrach połączenia i że zapora nie blokuje portu. Aby uzyskać więcej informacji, zobacz Konfigurowanie zapory systemu Windows na potrzeby dostępu do aparatu bazy danych.

Krok 6. Weryfikowanie włączonych protokołów na SQL Server

W niektórych instalacjach SQL Server połączenia z aparatem bazy danych z innego komputera nie są włączone, chyba że administrator ręcznie je włączy. Możesz użyć jednej z następujących opcji, aby sprawdzić i włączyć protokoły niezbędne do zezwalania na połączenia zdalne z aparatem bazy danych SQL Server.

Opcja 1. Użyj pliku wyjściowego SQLCHECK

  1. Search pliku wyjściowego SQLCHECK dla sekcji "Szczegóły wystąpienia SQL Server" i znajdź sekcję informacji dla wystąpienia SQL Server.

  2. W sekcji znajdź wartości wymienione w poniższej tabeli, aby ustalić, czy protokoły SQL Server są włączone:

    Nazwa wartości Domniemanie Więcej informacji
    Włączono pamięć udostępnioną Może mieć wartość „true” lub „false” — dotyczy tylko połączeń lokalnych. Tworzenie prawidłowych parametrów połączenia przy użyciu protokołu pamięci udostępnionej
    Włączone nazwane potoki Jeśli wartość false, połączenia lokalne i zdalne używające nazwanych potoków nie powiedzie się Wybieranie protokołu sieciowego
    Włączono protokół TCP Jeśli wartość false, połączenia lokalne i zdalne używające protokołu TCP/IP nie powiedzie się.
    Uwaga Większość instalacji SQL Server używa protokołu TCP/IP jako protokołu komunikacyjnego między serwerem a klientem.
    Wybieranie protokołu sieciowego
  3. Włącz wymagane protokoły przy użyciu programu SQL Server Configuration Manager lub programu SQL Server PowerShell. Aby uzyskać więcej informacji, zobacz Włączanie lub wyłączanie protokołu sieciowego serwera.

    Uwaga

    Po włączeniu protokołu należy zatrzymać aparat bazy danych i uruchomić go ponownie, aby zmiana weszła w życie.

Opcja 2. Użycie programu SQL Server Configuration Manager

Aby włączyć połączenia z innego komputera przy użyciu programu SQL Server Configuration Manager, wykonaj następujące kroki:

  1. Otwórz program SQL Server Configuration Manager.
  2. W okienku po lewej stronie rozwiń węzeł Konfiguracja sieci SQL Server, a następnie wybierz wystąpienie SQL Server, z którym chcesz nawiązać połączenie. W okienku po prawej stronie są wyświetlane dostępne protokoły połączeń. Pamięć udostępniona jest zwykle włączona. Opcji tej używać tylko z tego samego komputera, więc większość instalacji pozostawia pamięć udostępnioną włączoną. Aby nawiązać połączenie z SQL Server z innego komputera, użyj protokołu TCP/IP. Jeśli protokół TCP/IP nie jest włączony, kliknij prawym przyciskiem myszy pozycję TCP/IP, a następnie wybierz pozycję Włącz.
  3. Jeśli zmienisz włączone ustawienie dla dowolnego protokołu, uruchom ponownie aparat bazy danych. W lewym okienku kliknij pozycję SQL Server Services. W okienku po prawej stronie kliknij prawym przyciskiem myszy wystąpienie aparatu bazy danych, a następnie wybierz pozycję Uruchom ponownie.

Krok 7. Testowanie łączności TCP/IP

Nawiązywanie połączenia z SQL Server przy użyciu protokołu TCP/IP wymaga nawiązania połączenia przez system Windows. Poniższe kroki umożliwiają przetestowanie łączności TCP przy użyciu narzędzia ping.

  1. W menu Start wybierz pozycję Uruchom. W polu Uruchom wpisz polecenie cmd, a następnie kliknij przycisk OK.
  2. W oknie wiersza polecenia wpisz ping i adres IP komputera, na którym uruchomiony jest program SQL Server. Przykład:
    • IPv4: ping 192.168.1.101
    • IPv6: ping fe80::d51d:5ab5:6f09:8f48%11
  3. Jeśli sieć jest prawidłowo skonfigurowana, ping zwraca Reply from <IP address> z dodatkowymi informacjami. Jeśli ping zwraca Destination host unreachable lub Request timed out, protokół TCP/IP nie jest poprawnie skonfigurowany. Błędy w tym momencie wskazują problem z komputerem klienckim, komputerem serwera lub czymś dotyczącym sieci, np. routerem. Aby rozwiązać problemy z siecią, zobacz Zaawansowane rozwiązywanie problemów z protokołem TCP/IP.
  4. Jeśli test ping zakończy się pomyślnie przy użyciu adresu IP, sprawdź, czy nazwa komputera może zostać rozpoznana jako adres TCP/IP. Na komputerze klienckim w oknie wiersza polecenia wpisz polecenie ping i nazwę komputera z uruchomionym programem SQL Server. Na przykład ping newofficepc.
  5. Jeśli polecenie ping do adresu IP powiedzie się, ale polecenie ping do nazwy komputera zwraca wartość Destination host unreachable lub Request timed out, na komputerze klienckim mogą być buforowane stare (nieaktualne) informacje o rozpoznawaniu nazw. Wpisz ipconfig /flushdns, aby wyczyścić pamięć podręczną DNS (dynamicznego rozpoznawania nazw). Następnie ponownie wyślij polecenie ping do komputera według nazwy. Gdy pamięć podręczna DNS jest pusta, komputer kliencki sprawdza najnowsze informacje o adresie IP komputera serwera.
  6. Jeśli sieć jest prawidłowo skonfigurowana, ping zwraca Reply from <IP address> z dodatkowymi informacjami. Jeśli można pomyślnie wysłać polecenie ping do komputera serwera według adresu IP, ale występuje błąd, taki jak Destination host unreachable lub Request timed out podczas wykonywania polecenia ping według nazwy komputera, rozpoznawanie nazw nie jest poprawnie skonfigurowane. Aby uzyskać więcej informacji, zobacz Rozwiązywanie podstawowych problemów z protokołem TCP/IP. Pomyślne rozpoznawanie nazw nie jest wymagane do nawiązania połączenia z SQL Server. Jeśli jednak nie można rozpoznać nazwy komputera na adres IP, należy nawiązać połączenia w celu określenia adresu IP. Problem z rozpoznawaniem nazw można rozwiązać później.

Uwaga

Możesz również użyć polecenia cmdlet Test-NetConnection lub Test-Connection, aby przetestować łączność TCP zgodnie z wersją programu PowerShell zainstalowaną na komputerze. Aby uzyskać więcej informacji dotyczących tego polecenia cmdlet PowerShell, zobacz sekcję Przegląd polecenia cmdlet.

Krok 8. Testowanie połączenia lokalnego

Przed rozwiązaniem problemu z połączeniem z innego komputera przetestuj możliwość nawiązywania połączenia z poziomu aplikacji klienckiej zainstalowanej lokalnie na komputerze, na którym działa SQL Server. Połączenie lokalne pozwala uniknąć problemów z sieciami i zaporami.

Ta procedura wymaga programu SQL Server Management Studio. Jeśli nie masz zainstalowanego programu Management Studio, zobacz Pobieranie programu SQL Server Management Studio (SSMS).

Jeśli nie możesz zainstalować programu Management Studio, możesz przetestować połączenie przy użyciu narzędzia sqlcmd.exe. Narzędzie sqlcmd.exe jest instalowane wraz z aparatem bazy danych. Aby uzyskać informacje na temat narzędzia sqlcmd.exe, zobacz Narzędzie sqlcmd.

  1. Zaloguj się do komputera, na którym zainstalowano SQL Server przy użyciu identyfikatora logowania, który może uzyskać dostęp do SQL Server. Podczas instalacji SQL Server wymaga co najmniej jednego logowania jako administrator SQL Server. Jeśli nie znasz administratora, zobacz Nawiązywanie połączenia z SQL Server, gdy administratorzy systemu są zablokowani.

  2. Na stronie Start wpisz SQL Server Management Studio lub w menu Start starszych wersji systemu Windows wybierz pozycję Wszystkie programy, Microsoft SQL Server, a następnie SQL Server Management Studio.

  3. Z menu rozwijanego Połącz wybierz pozycję Aparat bazy danych. W polu Uwierzytelnianie wybierz pozycję Uwierzytelnianie systemu Windows. W polu Nazwa serwera wpisz jeden z następujących typów połączeń:

    Nawiązywanie połączenia z Wpisać Przykład
    Wystąpienie domyślne <computer name> ACCNT27
    Wystąpienie nazwane <computer name\instance name> ACCNT27\PAYROLL

    Uwaga

    Podczas nawiązywania połączenia z serwerem SQL z aplikacji klienckiej na tym samym komputerze jest używany protokół pamięci współdzielonej. Pamięć udostępniona jest typem lokalnego potoku nazwanego, więc czasami występują błędy związane z potokami.

  4. Jeśli w tym momencie wystąpi błąd, musisz go rozwiązać przed kontynuowaniem. Twój identyfikator logowania może nie być autoryzowany do nawiązywania połączenia. Może brakować domyślnej bazy danych.

    Uwaga

    Nie można rozwiązać problemu bez wystarczającej ilości informacji, ponieważ niektóre komunikaty o błędach są celowo przekazywane do klienta. Jest to funkcja zabezpieczeń, która pozwala uniknąć udostępniania atakującemu informacji o serwerze SQL. Aby wyświetlić szczegóły dotyczące błędu, zobacz dziennik błędów serwera SQL.

  5. Jeśli wystąpi błąd 18456 — logowanie użytkownika nie powiodło się, to artykuł Książki online MSSQLSERVER_18456 zawiera dodatkowe informacje o kodach błędów. Blog Aarona Bertranda zawiera również obszerną listę kodów błędów zawartą w artykule Troubleshooting Error 18456 (link zewnętrzny). Dziennik błędów można wyświetlić przy użyciu programu SSMS (jeśli możesz nawiązać połączenie) w rozdziale Zarządzanie artykułu pt. Eksplorator obiektów. W przeciwnym razie można wyświetlić dziennik błędów za pomocą programu Notatnik systemu Windows. Jego lokalizacja domyślna różni się w zależności od posiadanej wersji i można ją zmienić podczas instalacji. Domyślną lokalizacją dla oprogramowania SQL Server 2019 (15.x) jest C:\Program Files\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\Log\ERRORLOG.

  6. Jeśli możesz nawiązać połączenie przy użyciu pamięci współdzielonej, przetestuj połączenie przy użyciu protokołu TCP. Możesz wymusić połączenie z użyciem protokołu TCP, określając tcp: przed nazwą. Oto kilka przykładów:

    Nawiązywanie połączenia z: Typ: Przykład:
    Wystąpienie domyślne tcp:<computer name> tcp:ACCNT27
    Wystąpienie nazwane tcp:<computer name/instance name> tcp:ACCNT27\PAYROLL
  7. Jeśli możesz nawiązać połączenie przy użyciu pamięci współdzielonej, ale nie TCP, musisz rozwiązać problem z protokołem TCP. Najbardziej prawdopodobnym problemem jest to, że protokół TCP nie jest włączony. Aby włączyć protokół TCP, zobacz Krok 6. Weryfikowanie włączonych protokołów na serwerze SQL.

  8. Jeśli twoim celem jest nawiązanie połączenia przy użyciu konta innego niż konto administratora, możesz rozpocząć od nawiązania połączenia jako administrator. Następnie spróbuj ponownie nawiązać połączenie przy użyciu identyfikatora logowania uwierzytelniania systemu Windows lub identyfikatora logowania uwierzytelnienia serwera SQL używanego przez aplikację kliencką.

Krok 9. Testowanie połączenia zdalnego

Po nawiązaniu połączenia przy użyciu protokołu TCP na tym samym komputerze nadszedł czas, aby spróbować nawiązać połączenie z komputera klienckiego. Można użyć dowolnej aplikacji klienckiej, ale aby uniknąć złożoności, zainstaluj narzędzia do zarządzania serwerem SQL na kliencie. Po zakończeniu instalacji spróbuj użyć programu SQL Server Management Studio.

  1. Użyj programu SQL Server Management Studio na komputerze klienckim i spróbuj nawiązać połączenie przy użyciu adresu IP i numeru portu TCP w formacie: adres IP+przecinek+numer portu. Na przykład 192.168.1.101,1433. Jeśli to połączenie zakończy się niepowodzeniem, prawdopodobnie wystąpił jeden z następujących problemów:
  2. Po nawiązaniu połączenia przy użyciu adresu IP i numeru portu zapoznaj się z następującymi scenariuszami:
    • Jeśli połączysz się z wystąpieniem domyślnym, które nasłuchuje na dowolnym porcie innym niż 1433, musisz użyć numeru portu w parametrach połączenia lub utworzyć alias na maszynie klienckiej, aby nawiązać połączenie z wystąpieniem domyślnym. Usługa SQL Server Browser nie może wyliczyć portów wystąpienia domyślnego.
    • Jeśli nawiążesz połączenie z wystąpieniem nazwanym, spróbuj nawiązać połączenie z wystąpieniem w formacie: adres IP+ukośnik+nazwa wystąpienia. (Na przykład 192.168.1.101\<instance name>.) Jeśli to się nie powiedzie, oznacza to, że numer portu nie jest zwracany do klienta. Problem jest związany z usługą SQL Server Browser, która udostępnia klientowi numer portu nazwanego wystąpienia. Poniżej przedstawiono rozwiązania tego problemu:
      • Uruchom usługę SQL Server Browser. Zobacz instrukcje uruchamiania przeglądarki w programie SQL Server Configuration Manager.
      • Usługa SQL Server Browser jest blokowana przez zaporę. Otwórz port UDP 1434 w zaporze. Wróć do rozdziału pt. Krok 5. Weryfikowanie konfiguracji zapory. Upewnij się, że otwierasz port UDP, a nie port TCP.
      • Informacje o porcie UDP 1434 są blokowane przez router. Komunikacja UDP (protokół datagramu użytkownika) nie jest przeznaczona do przechodzenia przez routery i uniemożliwia wypełnianie sieci ruchem o niskim priorytecie. Możesz skonfigurować router do przekazywania ruchu UDP lub podać numer portu za każdym razem, gdy nawiązujesz połączenie.
      • Jeśli komputer kliencki korzysta z systemu Windows 7, Windows Server 2008 lub nowszego systemu operacyjnego, system operacyjny klienta może usunąć ruch UDP, ponieważ odpowiedź z serwera jest zwracana z innego adresu IP, niż ten do którego skierowano zapytanie. Ta akcja jest funkcją zabezpieczeń blokującą "luźne mapowanie źródła". Aby uzyskać więcej informacji, zobacz sekcję Wiele adresów IP serwera w artykule Books Online Troubleshooting: Timeout Expired (Rozwiązywanie problemów: przekroczenie limitu czasu wygasło). (Ten artykuł pochodzi z SQL Server 2008 R2, ale podmioty zabezpieczeń nadal mają zastosowanie. Możesz skonfigurować klienta tak, aby używał poprawnego adresu IP lub podać numer portu za każdym razem, gdy nawiązujesz połączenie).
  3. Po nawiązaniu połączenia przy użyciu adresu IP (lub adresu IP i nazwy wystąpienia nazwanego wystąpienia) spróbuj nawiązać połączenie przy użyciu nazwy komputera (lub nazwy komputera i nazwy wystąpienia dla nazwanego wystąpienia). Umieść ciąg tcp: przed nazwą komputera, aby wymusić połączenie TCP/IP. Na przykład w przypadku wystąpienia domyślnego na komputerze o nazwie ACCNT27 użyj polecenia tcp:ACCNT27. W przypadku nazwanego wystąpienia o nazwie PAYROLL na tym komputerze użyj polecenia tcp:ACCNT27\PAYROLL. Jeśli możesz nawiązać połączenie przy użyciu adresu IP, ale nie przy użyciu nazwy komputera, oznacza to problem z rozpoznawaniem nazw. Wróć do rozdziału pt. Krok 7: Testowanie łączności TCP/IP
  4. Po nawiązaniu połączenia przy użyciu nazwy komputera wymuszając TCP, spróbuj nawiązać połączenie przy użyciu nazwy komputera bez wymuszania TCP. Na przykład w przypadku wystąpienia domyślnego i po prostu użyj nazwy komputera, takiej jak CCNT27. W przypadku wystąpienia nazwanego użyj nazwy komputera i nazwy wystąpienia, takiej jak ACCNT27\PAYROLL. Jeśli możesz nawiązać połączenie podczas wymuszania protokołu TCP, ale nie bez wymuszania protokołu TCP, klient prawdopodobnie używa innego protokołu, takiego jak nazwane potoki. Aby rozwiązać ten problem, wykonaj następujące czynności:
    1. Na komputerze klienckim użyj programu SQL Server Configuration Manager. W okienku po lewej stronie rozwiń węzeł Konfiguracja natywnej wersji> klienta <SQL, a następnie wybierz pozycję Protokoły klienta.
    2. W okienku po prawej stronie upewnij się, że protokół TCP/IP jest włączony. Jeśli protokół TCP/IP jest wyłączony, kliknij prawym przyciskiem myszy pozycję TCP/IP i wybierz pozycję Włącz.
    3. Upewnij się, że kolejność protokołu dla protokołu TCP/IP jest mniejsza niż nazwane potoki (lub VIA w starszych wersjach) protokołów. Ogólnie rzecz biorąc, należy pozostawić pamięć współdzieloną jako kolejność 1, a TCP/IP jako kolejność 2. Pamięć współdzielona jest używana tylko wtedy, gdy klient i serwer SQL są uruchomione na tym samym komputerze. Wszystkie włączone protokoły są wypróbowane w kolejności, dopóki jeden nie powiedzie się, ale pamięć współdzielona jest pomijana, gdy połączenie nie znajduje się na tym samym komputerze.

Krok 10. Sprawdzanie uprawnień użytkownika

Jeśli do nawiązywania połączenia używasz nazwanych potoków, sprawdź, czy użytkownik ma uprawnienia do logowania się do systemu Windows. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z połączeniami nazwanych potoków.

Zobacz też