Użytkownicy mogą nie być w stanie połączyć się zdalnie z programem SQL Server przy użyciu protokołu TCP/IP
Ten artykuł pomaga rozwiązać problem polegający na tym, że nie można połączyć się zdalnie z programem SQL Server przy użyciu protokołu TCP/IP.
Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2018930
Symptomy
W przypadku korzystania z programu Microsoft SQL Server może wystąpić co najmniej jeden z następujących objawów:
Tylko użytkownicy z uprawnieniami CONTROL SERVER (na przykład członkowie stałej roli serwera syadmin ) mogą łączyć się za pośrednictwem protokołu TCP/IP. Użytkownicy, którzy nie mają tego uprawnienia, nie mogą łączyć się zdalnie za pośrednictwem protokołu TCP/IP przy użyciu uwierzytelniania systemu Windows lub programu SQL Server.
Uwaga 16.
Zauważysz, że podniesione połączenia użytkowników są wyświetlane tylko w widoku dynamicznego zarządzania sys.dm_exec_sessions (Transact-SQL), ale nie w widoku sys.dm_exec_connections (Transact-SQL).
Połączenia lokalne i zdalne przy użyciu protokołu nazwanych potoków, a także połączenia lokalne korzystające z protokołu pamięci współdzielonej nadal działają prawidłowo.
Ponadto w pliku dziennika błędów programu SQL Server są rejestrowane następujące komunikaty:
Po uruchomieniu programu SQL Server:
Błąd: 26023, Ważność: 16, Stan: 1.
Dostawca TCP serwera nie nasłuchuje ['any'ipv6<> 1963]. Port TCP jest już używany.
Błąd: 9692, Ważność: 16, Stan: 1.
Transport protokołu Service Broker nie może nasłuchiwać na porcie 1963, ponieważ jest używany przez inny proces.W przypadku nieudanych logowań:
SQL Server 2008 i nowsze wersje:
Błąd: 18456, Ważność: 14, Stan: 11.
Logowanie użytkownika "MyDomain\TestAcc" nie powiodło się. Przyczyna: Sprawdzanie poprawności dostępu serwera opartego na tokenach nie powiodło się z powodu błędu infrastruktury. Sprawdź poprzednie błędy.
Przyczyna
Błąd występuje podczas konfigurowania punktu końcowego TCP dla usługi Service Broker przy użyciu tego samego portu, z którego skonfigurowano wystąpienie programu SQL Server. Listę punktów końcowych można uzyskać, wykonując następujące zapytanie:
SELECT * FROM sys.tcp_endpoints
Uwaga 16.
Zgodnie z wyjaśnieniem w temacie Książki online na temat sys.tcp_endpoints (Transact-SQL) ten widok nie zawiera informacji na temat portów i protokołów, które jest obecnie skonfigurowane do użycia przez wystąpienie programu SQL Server. Aby znaleźć te informacje, zobacz SQL Server Configuration Manager.
Rozwiązanie
Metoda 1. Usunięcie punktu końcowego powodującego problem przy użyciu polecenia DROP ENDPOINT (Transact-SQL).
Aby na przykład usunąć punkt końcowy o nazwie
TestEP
, możesz użyć następującego polecenia:DROP ENDPOINT TestEP
Metoda 2. Zmień punkt końcowy, aby użyć innego portu przy użyciu polecenia ALTER ENDPOINT (Transact-SQL).
Aby na przykład zmienić punkt końcowy o nazwie
TestEP
, aby użyć innego portu, możesz użyć następującego polecenia:ALTER ENDPOINT TestEP as tcp (listener_port=1980)
Więcej informacji
Podobne problemy mogą również wystąpić w przypadku innych punktów końcowych TCP, takich jak te utworzone na potrzeby dublowania bazy danych, a komunikaty o błędach podczas uruchamiania programu SQL Server zostaną odpowiednio zmienione.