Szkolenie
Moduł
Dowiedz się, jak bezpiecznie połączyć serwer Azure SQL przy użyciu prywatnego punktu końcowego platformy Azure za pośrednictwem witryny Azure Portal, zapewniając prywatną i bezpieczną komunikację z serwerem SQL.
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server
Podczas nawiązywania połączenia z wystąpieniem programu 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.
Pełne 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:
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:
Uwaga
Aby rozwiązać problemy z łącznością w scenariuszach wysokiej dostępności, zobacz następujące artykuły:
Kompletny komunikat to:
Połączenie z serwerem zostało pomyślnie nawiązane, ale wystąpił błąd podczas procesu logowania. (dostawca: Dostawca pamięci udostępnionej, błąd: 0 — żaden proces nie znajduje się na drugim końcu potoku). (Microsoft SQL Server, błąd: 233)
Ten komunikat oznacza, że program SQL Server nie nasłuchuje w protokole pamięci udostępnionej ani nazwanych potoków.
Zalecamy zebranie informacji wymienionych w tej sekcji przy użyciu jednej z poniższych opcji przed kontynuowaniem rzeczywistych kroków rozwiązywania problemów z błędem.
Jeśli możesz zalogować się lokalnie na komputerze z programem SQL Server i mieć dostęp administratora, użyj narzędzia 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.
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.
Zaloguj się do komputera hostującego wystąpienie SQL Server.
Uruchom program SQL Server Configuration Manager.
W lewym okienku kliknij pozycję SQL Server Services.
W okienku po prawej stronie sprawdź nazwę wystąpienia aparatu bazy danych.
Poniższe kroki umożliwiają uzyskanie adresu IP komputera hostującego wystąpienie SQL Server.
W menu Start wybierz pozycję Uruchom. W polu Uruchom wpisz polecenie cmd, a następnie kliknij przycisk OK.
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.
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:
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.
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.
Powinien zostać wyświetlony komunikat taki jak "Serwer nasłuchuje [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 to zazwyczaj port używany przez aparat bazy danych lub domyślne wystąpienie programu SQL Server. Tego portu może używać tylko jedno wystąpienie programu SQL Server. Jeśli zainstalowano więcej niż jedno wystąpienie programu SQL Server, niektóre wystąpienia muszą używać innych numerów portów). Zanotuj numer portu używany przez wystąpienie programu SQL Server, z którym próbujesz nawiązać połączenie.
Uwaga
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.
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ą.
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."
Uwaga
Ten krok jest wymagany tylko do rozwiązywania problemów z łącznością z nazwanymi wystąpieniami.
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.
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, zapoznaj się z wartościami NetBios Name/FQDN w sekcji Informacje o komputerze w pliku wyjściowym.
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.
Przykładowe wyjście:
Aliasy SQL:
Alias Name Protocol Server Name Port 32-bit
---------- -------- ------------ ---- ------
prodsql TCP prod_sqlserver 1430
Dane wyjściowe wskazują alias prodsql
dla programu SQL Server o nazwie prod_sqlserver
uruchomionej na porcie 1430.
W programie SQL Server Configuration Manager rozwiń węzeł Konfiguracja klienta natywnego SQL Server i wybierz pozycję Aliasy.
Sprawdź, czy dla serwera, z którym próbujesz nawiązać połączenie, zdefiniowano aliasy.
Jeśli aliasy istnieją, wykonaj następujące kroki:
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 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:
<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 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.
<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.
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.
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.
Przeszukaj plik wyjściowy SQLCHECK pod kątem sekcji "Szczegóły wystąpienia programu SQL Server" i znajdź sekcję informacji dla wystąpienia programu SQL Server.
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 |
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.
Aby włączyć połączenia z innego komputera przy użyciu programu SQL Server Configuration Manager, wykonaj następujące kroki:
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.
ping
i adres IP komputera, na którym uruchomiony jest program SQL Server. Na przykład: .ping 192.168.1.101
ping fe80::d51d:5ab5:6f09:8f48%11
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.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
.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.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.
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.
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.
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.
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 | Typ | Przykład |
---|---|---|
Wystąpienie domyślne | <computer name> |
ACCNT27 |
Nazwane wystąpienie | <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.
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.
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.
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 |
Nazwane wystąpienie | tcp:<computer name/instance name> |
tcp:ACCNT27\PAYROLL |
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.
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ą.
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.
192.168.1.101,1433
. Jeśli to połączenie nie powiedzie się, prawdopodobnie masz jeden z następujących problemów: ping
adresu IP nie działa. Oznacza to ogólny problem z konfiguracją protokołu TCP. Wróć do rozdziału pt. Krok 7: Testowanie łączności TCP/IP192.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. Oto rozwiązania: 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/IPJeśli do nawiązania 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.
Szkolenie
Moduł
Dowiedz się, jak bezpiecznie połączyć serwer Azure SQL przy użyciu prywatnego punktu końcowego platformy Azure za pośrednictwem witryny Azure Portal, zapewniając prywatną i bezpieczną komunikację z serwerem SQL.