Användare kanske inte kan fjärransluta till SQL Server med TCP/IP-protokoll
Den här artikeln hjälper dig att lösa problemet där du inte kan ansluta via fjärranslutning till SQL Server med TCP/IP-protokoll.
Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 2018930
Symptom
När du använder Microsoft SQL Server kan du se ett eller flera av följande symtom:
Endast de användare som har behörigheten KONTROLLSERVER (till exempel medlemmar i den fasta serverrollen syadmin ) kan ansluta via TCP/IP. Användare som inte har den här behörigheten kan inte fjärransluta via TCP/IP-protokoll med antingen Windows- eller SQL Server-autentisering.
Kommentar
Du kommer att märka att de upphöjda användaranslutningarna endast visas i sys.dm_exec_sessions (Transact-SQL) Dynamisk hanteringsvy (DMV) men inte i sys.dm_exec_connections -vyn (Transact-SQL).
Både lokala och fjärranslutna anslutningar med hjälp av protokollet Namngivna pipes samt lokala anslutningar med hjälp av delat minnesprotokoll fortsätter att fungera bra.
Dessutom loggas följande meddelanden i SQL Server Errorlog-filen:
Vid start av SQL Server:
Fel: 26023, Allvarlighetsgrad: 16, Tillstånd: 1.
Serverns TCP-provider kunde inte lyssna på ['any'ipv6<> 1963]. Tcp-porten används redan.
Fel: 9692, Allvarlighetsgrad: 16, Tillstånd: 1.
Service Broker-protokolltransporten kan inte lyssna på port 1963 eftersom den används av en annan process.För misslyckade inloggningar:
SQL Server 2008 och senare versioner:
Fel: 18456, Allvarlighetsgrad: 14, Tillstånd: 11.
Inloggningen misslyckades för användaren "MyDomain\TestAcc". Orsak: Tokenbaserad serveråtkomstverifiering misslyckades med ett infrastrukturfel. Sök efter tidigare fel.
Orsak
Felet uppstår när du konfigurerar en TCP-slutpunkt för Service Broker med samma port som SQL Server-instansen är konfigurerad att använda. Du kan hämta listan över slutpunkter genom att köra följande fråga:
SELECT * FROM sys.tcp_endpoints
Kommentar
Som beskrivs i Books Online-avsnittet om sys.tcp_endpoints (Transact-SQL) innehåller den här vyn inte information om de portar och protokoll som SQL Server-instansen för närvarande är konfigurerad att använda. Information om hur du hittar den finns i Konfigurationshanteraren för SQL Server.
Åtgärd
Metod 1: Släpp slutpunkten som orsakar problemet med hjälp av kommandot DROP ENDPOINT (Transact-SQL).
Om du till exempel vill släppa en slutpunkt med namnet
TestEP
kan du använda följande kommando:DROP ENDPOINT TestEP
Metod 2: Ändra slutpunkten så att den använder en annan port med kommandot ALTER ENDPOINT (Transact-SQL).
Om du till exempel vill ändra en slutpunkt med namnet
TestEP
för att använda en annan port kan du använda följande kommando:ALTER ENDPOINT TestEP as tcp (listener_port=1980)
Mer information
Liknande problem kan också uppstå med andra TCP-slutpunkter som de som skapats för databasspegling, och felmeddelandena vid SQL Server-start ändras i enlighet med detta.