Delen via


Consistente problemen met sql Server-netwerkconnectiviteit

Notitie

Voordat u begint met het oplossen van problemen, raden we u aan de vereisten te controleren en de controlelijst te doorlopen.

Dit artikel helpt bij het oplossen van netwerkverbindingsfouten in SQL Server. Deze fouten zijn consistent en herhaalbaar elke keer. Ze verwijzen naar enkele configuratieproblemen, zoals SQL Server die de TCP- of firewall niet inschakelt, waardoor de verbinding wordt geblokkeerd. De probleemoplossing is gericht op externe TCP-verbindingen omdat dit het meest voorkomende verbindingstype is in de meeste datacenters, maar veel van de technieken kunnen ook worden toegepast op Named Pipes.

Typische foutberichten

De meest voorkomende foutberichten zijn:

  • Communicatiekoppeling is mislukt.

  • Algemene netwerkfout.

  • De opgegeven netwerknaam is onbereikbaar.

  • SQL Server bestaat niet of de toegang is geweigerd. (Dit kan ook een verificatiefout zijn)

  • Een netwerkgerelateerde of exemplaarspecifieke fout is opgetreden bij het maken van een verbinding met SQL Server. De server wordt niet gevonden of toegang tot de server is niet mogelijk. Controleer of de exemplaarnaam correct is en of in de instellingen van SQL Server externe verbindingen zijn toegestaan.

  • Fout bij het zoeken naar de server/het opgegeven exemplaar.

  • Kan geen verbinding met SQL Server Microsoft SQL Server openen, fout:53. Het netwerkpad is niet gevonden.

  • Er kan geen verbinding worden gemaakt omdat de doelcomputer deze actief heeft geweigerd.

Het bereik van het probleem beperken tot een gericht gebied

Met de volgende stappen kunt u het oplossen van problemen beperken tot een gericht gebied:

  • Client: toepassing, verbindingsreeks, stuurprogramma (ontbreekt Transport Layer Security (TLS) 1.2), SQL-alias (64/32-bits), hosts-bestand en onjuist DNS-achtervoegsel (volledige naam maakt verbinding; korte naam mislukt).
  • SQL Server: database-engine, ingeschakelde protocollen en firewall.
  • Netwerk: DNS-alias, gateway, router en firewall.

1. Kunt u lokaal verbinding maken met SQL Server met behulp van SQL Server Management Studio (SSMS) en TCP?

Gebruik bijvoorbeeld de verbindingsreeks in deze indeling: tcp:<ServerName>.<DomainName>.COM,1433, zoals tcp:sqlprod01.contoso.com,1433.

Notitie

tcp toegevoegd voordat de servernaam kleine letters moet bevatten.

Zo ja, dan werkt SQL Server goed. Het probleem is gerelateerd aan uw firewall, netwerk of client.

Als dat niet het probleem is, heeft het betrekking op SQL Server-service.

2. Kunt u verbinding maken met de SQL Server-poort vanaf de clientcomputer met behulp van telnet?

De opdracht voor het tot stand brengen van een telnet-verbinding met het SQL Server-exemplaar is telnet <ServerName>.<DomainName>.COM 1433bijvoorbeeld.

Zo ja, dan heeft het probleem betrekking op stuurprogramma's/providers, beveiliging/Ssl (Secure Sockets Layer), SQL-aliassen of toepassingen.

Als dat niet het probleem is, heeft het betrekking op uw hosts-bestand, netwerk of firewall wanneer stap 1 werkt.

  • Als telnet deze functie niet beschikbaar is als opdracht, voegt u deze toe als een Windows-functie. Hiervoor hoeft u niet opnieuw op te starten.

  • Nieuwere versies van Windows hebben de PowerShell-opdracht Test-NetConnection .

    Gebruik bijvoorbeeld de opdracht Test-NetConnection <ServerName>.<DomainName>.com -Port 1433 om de netwerkverbinding met een SQL Server-exemplaar te testen.

3. Kunt u verbinding maken met de server met behulp van een UDL-bestand als stap 2 werkt?

Zo ja, dan heeft het probleem betrekking op toepassingen, zoals een onjuiste verbindingsreeks of de provider die door de toepassing wordt gebruikt, indien anders dan de provider die wordt gebruikt in het UDL-bestand (Universal Data Link).

Zo niet, dan heeft het probleem betrekking op clients.

4. Kunnen andere clients verbinding maken met SQL Server?

Zo ja, dan heeft het probleem betrekking op uw firewall, netwerk, TLS 1.2 of client.

Als dat niet het probleem is, heeft het betrekking op uw firewall of server.

5. Kan de client verbinding maken met andere servers?

Zo ja, dan heeft het probleem betrekking op uw firewall, netwerk, TLS 1.2 of server.

Zo niet, dan is het probleem met betrekking tot uw firewall, netwerk of TLS 1.2.

SQL Server-service

Als het probleem te maken heeft met SQL Server Service, voert u de volgende stappen uit:

  1. Controleer of het serviceproces (sqlserver.exe) wordt uitgevoerd in Taakbeheer. (Of controleer via SQL Server Configuration Manager of services.msc als er meerdere exemplaren zijn geïnstalleerd.)

    Als deze niet wordt uitgevoerd, start u het exemplaar. Als het een gespiegelde of geclusterde configuratie is, controleert u of u zich op het primaire of actieve knooppunt bevindt. Gebruik clusterbeheer voor failover of altijd op clusters om ervoor te zorgen dat de resources online zijn.

  2. Controleer of het gebeurtenislogboek van de toepassing, clusterlogboeken of het SQL Server ERRORLOG-bestand een onherstelbare fout aangeeft.

  3. Controleer of de verwachte protocollen zijn ingeschakeld in SQL Server Configuration Manager en het SQL Server ERRORLOG-bestand (zie het volgende voorbeeld).

    Als dat niet het is, schakelt u deze in en start u SQL Server opnieuw. TCP moet altijd worden ingeschakeld als externe verbindingen zijn toegestaan.

    2013-11-20 09:42:03.90 Server Server is listening on [ 'any' <ipv6> 1433].
    2013-11-20 09:42:03.90 Server Server is listening on [ 'any' <ipv4> 1433].
    2013-11-20 09:42:03.94 Server Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\KJ].
    2013-11-20 09:42:03.94 Server Server named pipe provider is ready to accept connection on [ \\.\pipe\MSSQL$KJ\sql\query].
    
  4. In een SSMS-, UDL- of ODBC-gegevensbronbeheerderverbinding kunt u de SQL Server-browser omzeilen door de servernaam in de indeling op te geven: tcp:<ServerName>.<DomainName>.com,1433.

    Notitie

    Het gebruik van de FQDN (Fully Qualified Domain Name) tcp:en het poortnummer voor het maken van een verbinding is de meest betrouwbare en flexibele methode. tcp: moet kleine letters zijn.

    • Als de verbinding is geslaagd:

      • Controleer of de SQL Server-browser wordt uitgevoerd. Als SQL Server een standaardexemplaren is die luistert op poort 1433, hoeft deze niet te worden uitgevoerd. U kunt het poortnummer verwijderen en het nummer nog steeds laten werken.
      • Als het verwijderen van het tcp: voorvoegsel ervoor zorgt dat het mislukt, kunt u standaard verbinding maken via Named Pipes. U kunt valideren met behulp van np:hostname\<ServerName> de servernaam.
      • Als het gebruik van de NetBIOS-naam mislukt, hebt u mogelijk een SQL-alias die de NetBIOS-naam of een onjuist DNS-achtervoegsel in de netwerkconfiguratie overschrijft. Controleer ook de 32-bits aliassen.
    • Als SSMS geen verbinding kan maken, probeert u verbinding te maken met een UDL-bestand of via de ODBC-gegevensbronbeheerder.

      • Gebruik het IP-adres van de server in plaats van de hostnaam. U kunt zelfs proberen 127.0.0.1 te gebruiken als de server niet is geclusterd en luistert op 'any'.
      • Probeer verschillende stuurprogramma's. Nieuwere stuurprogramma's ondersteunen TLS 1.2 en geven betere foutberichten.
      • Probeer verschillende protocollen: tcp:<ServerName>.<DomainName>.com,1433, np:<ServerName>.<DomainName>.com\<InstanceName>of lpc:<ServerName>.<DomainName>.com\<InstanceName>. Gebruik SQL Server Configuration Manager om wijzigingen aan te brengen. Start vervolgens SQL Server opnieuw en gebruik het ERORLOG-bestand om de wijzigingen te bevestigen.
      • Is SQL Server (2014 of eerder) bijgewerkt om TLS 1.2 te ondersteunen? Is de client bijgewerkt om TLS 1.2 te ondersteunen? Zijn deze protocollen ingeschakeld?
      • Controleer op een SQL-alias in SQL Server Configuration Manager of cliconfg.exe op alle Windows-computers. Controleer de 64-bits en 32-bits aliassen.
      • Controleer het ERRORLOG-bestand op foutberichten, zoals de database is niet beschikbaar of in herstel.
      • Controleer de NETSTAT uitvoer om te controleren of SQL Server eigenaar is van de verwachte poort. Voer NETSTAT -abon > c:\temp\ports.txt bijvoorbeeld uit vanaf een opdrachtprompt met beheerdersmachtigingen.
    • Als SQL Server een andere poort dan 1433 gebruikt:

      • Als u verbinding kunt maken door het poortnummer op te geven, maar niet wanneer u het poortnummer weglaat, is dit een probleem met de SQL Server-browser. Dit betekent dat de SQL Browser-service niet het juiste poortnummer kan opgeven voor het SQL Server-exemplaar waarmee u verbinding wilt maken. Mogelijk moet u de SQL Browser-service ook opnieuw starten om de gegevens te vernieuwen.

      • Als u zelfs geen verbinding kunt maken wanneer u het poortnummer opgeeft en dit gebeurt alleen wanneer u extern verbinding maakt, is het een firewallprobleem. Controleer de firewallinstellingen en zorg ervoor dat de poort is toegestaan voor binnenkomende en uitgaande verbindingen. Mogelijk moet u ook een firewallregel maken om de SQL Server-toepassing of -service te laten communiceren via de firewall.

      • Als u AlwaysOn gebruikt, gebruikt de listener geen SQL Server-browser, dus moet u het poortnummer opgeven in de verbindingsreeks. Als dat niet werkt, probeert u rechtstreeks verbinding te maken met het primaire knooppunt op de normale SQL-poort. Als dat werkt, heeft het probleem betrekking op listener.

Als geen van de bovenstaande methoden werkt, start u de SQL Server-computer opnieuw op.

Het ergste scenario is om de SQL Server-service te stoppen, een nieuw exemplaar te installeren of de machine mogelijk opnieuw te bouwen en vervolgens de database opnieuw te koppelen of vanuit de back-up te herstellen. Als u TDE (Transparent Data Encryption) gebruikt, zoals de SSISDB-database, moet u ervoor zorgen dat de versleutelingssleutels worden opgeslagen voordat u deze stap uitvoert. Het wordt aangeboden als een optie omdat herbouwen soms sneller kan zijn dan een hoofdoorzaakanalyse van ontraceerbare problemen. Voor geclusterde installaties kan de impact minder zijn omdat u een knooppunt opnieuw kunt opbouwen terwijl het wordt uitgevoerd op het alternatieve knooppunt.

Firewall

Over het algemeen is het standaardgedrag van de firewall om de poorten van de SQL Server- en SQL Server-browser te blokkeren. Als dat het zo is, mislukken externe verbindingen, terwijl lokale verbindingen slagen. Test het met behulp van Test-NetConnection. Deze is beschikbaar in alle ondersteunde versies van Windows.

Test-NetConnection <ServerName> -Port 1433   
Test-NetConnection <ServerName>.<DomainName>.com -Port 1433

Zorg ervoor dat u controleert op welke poort SQL Server luistert in het ERRORLOG-bestand . Mogelijk moet u dit inschakelen telnet door deze toe te voegen als een Windows-functie. Hiervoor hoeft u niet opnieuw op te starten. SQL Server moet ook luisteren op TCP. PortQry kan worden gedownload van de Microsoft-downloadsite. Als u de SQL Server-browser gebruikt, controleert u of de UDP-poort 1434 is geopend in de firewall en de TCP-poort van SQL Server.

Netwerk

De client of toepassingsserver kan verbinding maken met SQL Server op een andere computer. Mogelijk ondervinden meerdere clients in een bepaald netwerk of subnet problemen bij het maken van verbinding met een server buiten het subnet of in een ander specifiek subnet. Een netwerkfirewall kan verhinderen dat een specifieke client verbinding maakt met een specifieke SQL Server. De client kan bijvoorbeeld verbinding maken met andere SQL-servers en andere clients kunnen verbinding maken met het probleem met SQL Server.

VPN

Als het probleem zich alleen voordoet op een virtueel particulier netwerk (VPN) en niet wanneer de laptop intern wordt gebracht, moet de VPN-leverancier het probleem oplossen. U kunt een client- en servernetwerktracering ophalen, wat kan helpen bij het weergeven van het type problemen dat de VPN veroorzaakt. Verwijderde pakketten zijn bijvoorbeeld de meest waarschijnlijke pakketten. De VPN kan ook de interne routering tussen de client en de server wijzigen, waardoor deze wordt blootgesteld aan een ander netwerkapparaat dat de verbinding blokkeert. Het verzamelen van netwerktraceringen op tussenliggende apparaten helpt het probleem te isoleren door het netwerk te verdelen. De tracert-opdracht kan de routering onthullen.

Klant

Als het probleem betrekking heeft op clients, ziet u mogelijk de volgende indicatoren:

  • Andere clients kunnen normaal verbinding maken met de server.

  • Er kunnen geen toepassingen verbinding maken vanaf deze computer.

  • U kunt geen verbinding maken met een UDL - of ODBC-gegevensbronbeheerder.

    Dit kan worden veroorzaakt door een uitgaande firewallregel of onjuiste standaard-DNS-achtervoegsels. Probeer te testen met de volledig gekwalificeerde servernaam, bijvoorbeeld:

    Test-NetConnection <ServerName> -Port 1433   
    Test-NetConnection <ServerName>.<DomainName>.com -Port 1433
    

    Dit kan een TLS-probleem zijn. De server gebruikt bijvoorbeeld TLS 1.2 en de clientstuurprogramma's zijn er niet voor bijgewerkt.

    Er kan een hostbestandsvermelding, een SQL-alias of een DNS-alias zijn die de verbinding naar een andere server leidt. Ping en telnet. Als ze werken, maar het stuurprogramma mislukt, vermoedt u een SQL-alias of TLS-probleem.

Stuurprogramma

Als het probleem betrekking heeft op stuurprogramma's, probeert u verschillende stuurprogramma's.

User

Als het probleem betrekking heeft op gebruikers, moet u zich bij deze computer aanmelden bij een andere gebruiker.

  • Als de verbinding is geslaagd, bekijkt u wat er anders is aan de mislukte gebruiker. Het Windows-gebruikersprofiel is bijvoorbeeld beschadigd of misschien behoren de gebruikers tot een andere organisatie-eenheid (OE) of een ander domein.

  • Als er gebruikers van meerdere domeinen zijn, kunt u proberen een gebruiker uit hetzelfde domein als de server te gebruiken. Normaal gesproken leiden gebruikersproblemen tot verificatiefouten en hebben een andere werkstroom voor probleemoplossing.

  • Als het geen verificatieprobleem is, kan een procesmonitorlogboek helpen bij het identificeren van lokale machtigingsproblemen die van invloed zijn op de connectiviteit. De gebruiker heeft bijvoorbeeld een gegevensbronnaam (DSN) of een soort registeromleiding naar een ander stuurprogramma, een lokale machtigingsbeperking of iets dat de verbindingsfout kan verklaren.

Toepassing

Als alleen een bepaalde toepassing mislukt en een UDL-bestand slaagt, kan het een stuurprogrammaprobleem zijn of heeft de toepassing een onjuiste verbindingsreeks. Laat het ontwikkelteam van de toepassing of de leverancier van derden de verbindingsreeks controleren. U kunt Process Explorer www.sysinternals.com gebruiken om te zien van welk stuurprogramma wordt gebruikt als de klant niet zeker is.

Traceringshulpprogramma's om vast te leggen

Leg een client- en servernetwerktracering vast. Voer SQL-tracering uit op zowel de client als op de server tegelijk.

Installeer WireShark met het NCAP-stuurprogramma om te traceren wanneer de client en server zich op dezelfde computer bevinden.

Uw organisatie heeft mogelijk een eigen netwerkinfrastructuurteam waarmee u contact kunt opnemen en mogelijk een hulpprogramma voor tracering van voorkeur heeft om de opname uit te voeren. Ze kunnen elk hulpprogramma gebruiken zolang het is opgeslagen in een indeling die compatibel is met Network Monitor (NetMon.exe) of WireShark. PCAP-indeling is de populairste.

Voer SQL Network Analyzer (SQLNA) en SQL Network Analyzer UI (SQLNAUI) uit op de netwerktracering om een eenvoudig te lezen rapport te verkrijgen.

Meer informatie

Disclaimerinformatie van derden

De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.