Gebruikers kunnen mogelijk geen externe verbinding maken met SQL Server met behulp van het TCP/IP-protocol

Dit artikel helpt u bij het oplossen van het probleem waarbij u geen externe verbinding kunt maken met SQL Server met behulp van het TCP/IP-protocol.

Originele productversie: SQL Server
Origineel KB-nummer: 2018930

Symptomen

Wanneer u Microsoft SQL Server gebruikt, ziet u mogelijk een of meer van de volgende symptomen:

  • Alleen de gebruikers met de machtiging CONTROL SERVER (bijvoorbeeld leden van de vaste syadmin-serverfunctie ) kunnen verbinding maken via TCP/IP. Gebruikers die niet over deze machtiging beschikken, kunnen geen externe verbinding maken via het TCP/IP-protocol met behulp van Windows of SQL Server-verificatie.

    Opmerking

    U ziet dat de verhoogde gebruikersverbindingen alleen worden weergegeven in sys.dm_exec_sessions (Transact-SQL) Dynamic Management View (DMV), maar niet in sys.dm_exec_connections (Transact-SQL) weergave.

  • Zowel lokale als externe verbindingen met het Named Pipes-protocol en lokale verbindingen die gebruikmaken van het protocol voor gedeeld geheugen blijven goed werken.

Bovendien worden de volgende berichten vastgelegd in het SQL Server Errorlog-bestand:

  • Bij SQL Server opstarten:

    Fout: 26023, Ernst: 16, Status: 1.
    Server TCP-provider kan niet luisteren op ['any'ipv6<> 1963]. De TCP-poort is al in gebruik.
    Fout: 9692, Ernst: 16, Status: 1.
    Het Service Broker-protocoltransport kan niet luisteren op poort 1963 omdat het wordt gebruikt door een ander proces.

  • Voor mislukte aanmeldingen:

    SQL Server 2008 en latere versies:

    Fout: 18456, Ernst: 14, Status: 11.
    Aanmelden is mislukt voor gebruiker 'MyDomain\TestAcc'. Reden: Op tokens gebaseerde servertoegangsvalidatie is mislukt met een infrastructuurfout. Controleer op eerdere fouten.

Oorzaak

De fout treedt op wanneer u een TCP-eindpunt voor Service Broker configureert met behulp van dezelfde poort die het SQL Server-exemplaar is geconfigureerd voor gebruik. U kunt de lijst met eindpunten verkrijgen door de volgende query uit te voeren:

SELECT * FROM sys.tcp_endpoints

Opmerking

Zoals uitgelegd in het onderwerp Boeken online over sys.tcp_endpoints (Transact-SQL), bevat deze weergave geen informatie over de poorten en protocollen die SQL Server exemplaar momenteel is geconfigureerd voor gebruik. Zie SQL Server Configuration Manager om deze informatie te vinden.

Oplossing

  • Methode 1: Verwijder het eindpunt dat het probleem veroorzaakt met behulp van de opdracht DROP ENDPOINT (Transact-SQL).

    Als u bijvoorbeeld een eindpunt met de naam TestEP wilt verwijderen, kunt u de volgende opdracht gebruiken:

    DROP ENDPOINT TestEP
    
  • Methode 2: Wijzig het eindpunt om een andere poort te gebruiken met behulp van de opdracht ALTER ENDPOINT (Transact-SQL).

    Als u bijvoorbeeld een eindpunt met de naam TestEP wilt wijzigen om een andere poort te gebruiken, kunt u de volgende opdracht gebruiken:

    ALTER ENDPOINT TestEP as tcp (listener_port=1980)
    

Meer informatie

Vergelijkbare problemen kunnen zich ook voordoen met andere TCP-eindpunten, zoals die zijn gemaakt voor databasespiegeling, en de foutberichten bij SQL Server opstarten worden dienovereenkomstig gewijzigd.