Użytkownicy mogą nie mieć możliwości zdalnego nawiązywania połączenia z SQL Server przy użyciu protokołu TCP/IP
Ten artykuł pomaga rozwiązać problem polegający na tym, że nie można nawiązać zdalnego połączenia z SQL Server przy użyciu protokołu TCP/IP.
Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2018930
Symptomy
W przypadku korzystania z usługi Microsoft SQL Server może wystąpić co najmniej jeden z następujących objawów:
Tylko użytkownicy, którzy mają uprawnienia 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 systemu Windows lub uwierzytelniania SQL Server.
Uwaga
Zauważysz, że połączenia użytkownika z podwyższonym poziomem uprawnień 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 korzystające z protokołu Nazwane potoki oraz połączenia lokalne korzystające z protokołu pamięci współdzielonej nadal działają prawidłowo.
Ponadto następujące komunikaty są rejestrowane w pliku SQL Server Errorlog:
Po uruchomieniu SQL Server:
Błąd: 26023, ważność: 16, stan: 1.
Dostawca TCP serwera nie może nasłuchiwać na ['any'ipv6<> 1963]. Port Tcp jest już używany.
Błąd: 9692, ważność: 16, stan: 1.
Transport protokołu service brokera nie może nasłuchiwać na porcie 1963, ponieważ jest używany przez inny proces.W przypadku nieudanych logowań:
SQL Server wersje 2008 i nowsze:
Błąd: 18456, ważność: 14, stan: 11.
Logowanie użytkownika "MyDomain\TestAcc" nie powiodło się. Przyczyna: Weryfikacja dostępu do serwera opartego na tokenach nie powiodła się z powodu błędu infrastruktury. Sprawdź, czy nie występują 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, do którego skonfigurowano wystąpienie SQL Server. Listę punktów końcowych można uzyskać, wykonując następujące zapytanie:
SELECT * FROM sys.tcp_endpoints
Uwaga
Jak wyjaśniono w temacie Books Online na temat sys.tcp_endpoints (Transact-SQL), ten widok nie zawiera informacji o portach i protokołach, które SQL Server wystąpienie jest obecnie skonfigurowane do użycia. Aby znaleźć te informacje, zobacz SQL Server Configuration Manager.
Rozwiązanie
Metoda 1. Upuść punkt końcowy, który powoduje problem, używając 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 protokołu TCP, takich jak te utworzone na potrzeby dublowania bazy danych, a komunikaty o błędach podczas uruchamiania SQL Server zostaną odpowiednio zmienione.