Lösa fel i anslutning till SQL Server

Förutsättning

Om du vill använda den här felsökaren effektivt, kanske du vill samla in följande information.

  1. Hela texten i felmeddelandet med felkoder och om felet är intermittent (händer bara ibland) eller konsekvent (händer hela tiden).

  2. Errorlogs från SQL Server från vilken du Observera följande:

    1. Fullständigt kvalificerade domännamn (FQDN) för SQL Server-datorn eller vid klusterinstallationer virtuella FQDN-namnet. Om du använder en namngiven instans, antecknar du namnet på instansen. (Obs: du kan söka efter: ”servernamnet är” sträng för att få denna information i errorlog).

    2. Nätverksbibliotek och portar SQL-instans lyssnar på Exempel-meddelanden: Namngivna pipes: anslutning till lokalt serverprovidern är redo att acceptera en anslutning på [\\.\pipe\sql\query]. TCP/IP-och portnummer: servern lyssnar på [:: 1 1433].

  3. Program- och händelseloggar från SQL Server-och klient.

  4. Om anslutningar misslyckas i ett program från app anslutningssträngen. Dessa finns normalt i Web.config-filer för ASP.net-program.

Checklista

  • Se till att SQL-servern är igång och visas följande meddelande i SQL Server ErrorLog: SQL Server är nu klar för klientanslutningar. Detta är ett informationsmeddelande; Ingen användaråtgärd krävs.

  • Kontrollera grundläggande anslutningsmöjligheter via IP-adress och kontrollera om eventuella avvikelser: Pinga – en <SQL Server-dator>, ping – en <SQL Server IP-adress>. Om du upptäcker eventuella problem arbetar du med nätverksadministratören att åtgärda detsamma.

  • Kontrollera om SQL lyssnar på lämpliga protokoll genom att granska ErrorLog.

  • Kontrollera om du kan ansluta till SQLServer med en UDL -fil – om det fungerar, sedan kan det finnas ett problem med anslutningssträngen. Anvisningar om förfarandet om UDL testa, Välj alternativet ”AAnslut till SQLServer med en UDL-fil ” längst ned.

  • Kontrollera om du kan ansluta till SQL Server från andra klientdatorer och annan användare inloggningar – om du kan sedan problemet kan vara specifika för klienten eller inloggning som har drabbats av problemet. Kontrollera händelseloggarna för Windows på problematiska klient för ytterligare tips. Kontrollera också om drivrutiner är uppdaterade.

  • Om det uppstår fel inloggning, se till att användaren har en inloggning på servern nivå och fall behörighet att ansluta till den databas som användaren försöker ansluta till.

Nu väljer du det problem du påträffat om du vill fortsätta.

Felmeddelandet ”ett nätverksrelaterat eller instans-specifikt fel uppstod när en anslutning till SQL Server' representerar en eller flera av följande felmeddelanden:

  • Ett nätverksrelaterat eller instans-specifikt fel uppstod när en anslutning till SQL Server. Servern kunde inte hittas eller var inte tillgänglig. Kontrollera att namnet är korrekt och att SQL Server är konfigurerad för att tillåta fjärranslutningar. (leverantör: SQL-nätverksgränssnitt fel: 26 - fel att hitta Server-instansen anges)

  • SQL Server Native Client Data Link Error --------------------------- [Microsoft SQL Server Native Client 10.0]: timeout för inloggning har upphört att gälla [Microsoft SQL Server Native Client 10.0]: ett nätverksrelaterat eller instans-specifikt fel uppstod när en anslutning till SQL Server. Servern är inte hittades eller inte tillgänglig. Kontrollera om namnet är korrekt och om SQL Server är konfigurerad för att tillåta fjärranslutningar. Mer information finns i SQL Server Books Online. [Microsoft SQL Server Native Client 10.0]: SQL Server-nätverksgränssnitt: angivna för fel att hitta Server/Instance [xFFFFFFFF].

  • Ett nätverksrelaterat eller instans-specifikt fel uppstod när en anslutning till SQL Server. Servern kunde inte hittas eller var inte tillgänglig. Kontrollera att namnet är korrekt och att SQL Server är konfigurerad för att tillåta fjärranslutningar. (leverantör: TCP-Provider, fel: 0 - A-anslutningsförsöket misslyckades eftersom den anslutna parten inte svarade efter en viss tidsperiod eller etablerade anslutningen misslyckades eftersom ansluten värd inte svarar.) (Microsoft SQL Server, fel: 10060)

  • Ett nätverksrelaterat eller instans-specifikt fel uppstod när en anslutning till SQL Server. Servern kunde inte hittas eller var inte tillgänglig. Kontrollera att namnet är korrekt och att SQL Server är konfigurerad för att tillåta fjärranslutningar. (leverantör: namngivna rör-Provider, fel: 40 - gick inte att öppna en anslutning till SQL Server) (Microsoft SQL Server-fel: 53) Nätverkssökvägen hittades inte

  • [Microsoft] [SQL Server Native Client 11.0] TCP-Provider: ingen anslutning kan göras eftersom måldatorn aktivt nekade det.. [Microsoft] [SQL Server Native Client 11.0] Timeout för inloggning har upphört att gälla [Microsoft] [SQL Server Native Client 11.0] Ett nätverksrelaterat eller instans-specifikt fel uppstod när en anslutning till SQL Server. Servern är inte hittades eller inte tillgänglig. Kontrollera om namnet är korrekt och om SQL Server är konfigurerad för att tillåta fjärranslutningar. Mer information finns i SQL Server Books Online.

Det kan finnas ett mer specifikt fel. Välj det exakta felet som du får.

Fel Timeout utgångna representerar en eller flera av följande felmeddelanden:

  • Tidsgränsen har överskridits. Tidsgränsen uppnåddes slutförs eller om servern svarar inte.

  • System.Data.SqlClient.SqlException (0x80131904): Anslutning överskreds. Tidsgränsen uppnåddes vid försök att förbruka före inloggning handshake bekräftelse. Detta kan bero på att före inloggning handskakningen misslyckades eller det gick inte att svara tillbaka i tiden. Varaktighet som användes vid försök att ansluta till den här servern var - initiering [före inloggning] = 23. Handshake = 14979; ---> System.ComponentModel.Win32Exception (0x80004005): vänta uppnåddes

  • System.Data.SqlClient.SqlException (0x80131904): Tidsgränsen har överskridits. Tidsgränsen uppnåddes slutförs eller om servern svarar inte. ---> System.ComponentModel.Win32Exception (0x80004005): vänta uppnåddes

  • Anslutningstimeout har upphört att gälla. Tidsgränsen uppnåddes vid försök att förbruka före inloggning handshake bekräftelse. Detta kan bero på att före inloggning handskakningen misslyckades eller det gick inte att svara tillbaka i tiden. Varaktighet som användes vid försök att ansluta till den här servern var - initiering [före inloggning] = 21036; Handshake = 0; (Microsoft SQL Server, fel: -2)

Obs!

Andra och tredje felmeddelanden som uppstår när .net Framework 4.5 eller senare är installerat.

Kan du få ett felmeddelande som liknar följande:[Microsoft] [SQL Server Native Client 11.0] TCP-Provider: ingen anslutning kan göras eftersom måldatorn aktivt nekade det.

[Microsoft] [SQL Server Native Client 11.0] Timeout för inloggning har upphört att gälla.

[Microsoft] [SQL Server Native Client 11.0] Ett nätverksrelaterat eller instans-specifikt fel uppstod när en anslutning till SQL Server. Servern är inte hittades eller inte tillgänglig. Kontrollera om namnet är korrekt och om SQL Server är konfigurerad för att tillåta fjärranslutningar. Mer information finns i SQL Server Books Online.

Gå igenom var och en av de orsaker som gäller för din instans nedan och försök motsvarande lösningar för varje tillämplig orsaker.

Orsak 1: Fel servernamn som anges i anslutningssträngen eller i dialogrutan med server

  • Kontrollera servernamnet du anger programmet matchar vad du har i felloggen

  • Navigera till filen web.config för programmet och säkerställa Anslutningssträngar avsnitt pekar på rätt server-namnet och använder rätt format.

Obs!

Programmässigt hämta-anslutningssträngar från programmet genom att referera till provet vid Så här: Läs anslutningssträngar från Web.config-filen.

Om detta inte löser problemet kan du fortsätta att kontrollera andra orsaker i det här avsnittet.

Orsak 2: Felaktigt alias på klientdatorn

Alias används normalt i miljöer när du behöver att ansluta till SQL Server med ett annat namn, eller när det finns namnmatchningsproblem i nätverket. Ett felaktigt alias på klientdatorn kan orsaka anslutningar från programmen leder till fel server som resulterar i fel.

  • Öppna SQL Server Client Network Utility genom att skriva cliconfg.exe i Kör -kommandot.

  • Kontrollera om det finns andra alias som har definierats för den server som du försöker ansluta till.

  • Om du gör följande:

 

  1. Klicka på Redigera och byta namn på Server-alias. (till exempel om servernamnet är MySQL, byta namn på MySQL_test) och försöka ansluta igen. Om anslutningen fungerar är en uppgift som du hade ett felaktigt alias, troligen från en tidigare konfiguration som inte längre behövs. Om du fortfarande har felet, byta namn på alias tillbaka till det ursprungliga namnet och fortsätt till nästa steg.

  2. Kontrollera anslutningsparametrar för alias och de är korrekta. Här är några vanliga scenarier som kan orsaka problem med anslutning:

    • Felaktig IP-adress för servernamnet. Kontrollera IP-adressen matchar posten i SQL ErrorLog -fil.

    • Felaktig Server namn på servern namn parametern - t ex men din Server köalias pekar rätt server namn om servernamnet har felaktigt värde, anslutningar misslyckas.

    • Om du använder ett alias för namngivna pipes säkerställa pipe-namn har felaktigt format

      • Pipe-namnet bör vara \\Mydefaultinstance\pipe\sql\query för att ansluta till standard-förekomst med namnet Mydefaultinstance,

      • Pipe-namnet bör vara \\MySQL\pipe\MSSQL$Named\sql\query för att ansluta till en namngiven instans MySQL\Named

Om detta inte löser problemet, kan du fortsätta att kontrollera andra orsaker i det här avsnittet som gäller för din typ (standard eller namngiven instans)

Orsak 3 (standardinstansen): Firewall(s) mellan klienten och servern blockerar port SQL Server-instans lyssnar på

Standardinstans: en standardinstans vanligtvis körs på port 1433. Vissa installationer kan du också använda en annan port än standardporten (förutom 1433) för att köra SQL-instanser. Brandväggen kan blockera någon av dem.

  • Det portnummer som SQL-instansen körs. Om SQL server standard-instans använder en annan port än standardporten Kontrollera följande blogginlägg på MSDN för mer information: ansluta till SQL på en annan port än standardporten

  • Försök att lägga till portnumret för SQL Server i servernamnet i formatet < servernamn > portnummer och se om det fungerar. Om namnet på din SQL-instansen är MySQLDefaultinstance och den körs på port 2000, ange namnet på server som MySQLServer 2000 och se om det fungerar. Om det fungerar det finns indikationer på brandväggen blockerar porten.

  • Om bekräftas, kan du lägga till porten till i undantagslistan för brandväggen. För instruktioner, Välj alternativet ”för orsak 3 eller orsak 5: lägga till en port i undantagslistan för brandväggen” längst ned på sidan.

 

Orsak 4 (namngivna instans): SQL Browser har inte startats Klientprogram som ansluter till en namngiven instans av SQL Server används tjänsten SQL Browser på datorn där SQL körs att räkna upp porten som SQL lyssnar på. Om tjänsten browser inte har startats, misslyckas anslutningar.

  • Använda Konfigurationshanteraren för SQL Server eller tjänster applet i Kontrollpanelen och starta tjänsten SQL Browser om den inte redan är igång på datorn som kör SQL Server-instansen. Mer information finns i följande avsnitt på MSDN Så här: starta och stoppa tjänsten SQL Server Browser

Om SQL-webbläsaren redan är startad blockeras kontrollera om UDP-port 1434 av brandväggen används för nästa stycke.

Orsak 5 (namngivna instans): UDP-Port 1434 som används av SQL browser blockeras på nätverket

Om SQL-instansen är en namngiven instans, kan det ha antingen konfigurerats att använda dynamiska portar eller en statisk port. I båda fallen fråga nätverksbibliotek underliggande SQL Browser-tjänsten som körs på SQL Server-dator via UDP -port 1434 att räkna upp portnumret för den namngivna instansen. Om en brandvägg mellan klienten och servern blockerar UDP-porten, klientbiblioteket går inte att avgöra port (ett krav för anslutning) och anslutningen misslyckas 

Metod 1:

  1. Anteckna porten som SQL-instans lyssnar från SQL Server Errorlog

  2. Försök att ansluta till den namngivna instansen använder portnummer du servernamnet i formatet <ServerNamn\InstansNamn>, portnummer och se om det fungerar. Om det fungerar det är brandväggen blockerar port UDP-port 1434 uppgift. Om namnet på din SQL-instansen är MySQL\Namedinstance och den körs på port 3000, ange namnet på server som MySQL\Namedinstance,3000 och se om det fungerar. Om det fungerar det antingen innebära att UDP-port 1434 blockeras eller statiska porten blockeras eller båda. Kontrollera om det är den UDP-porten eller statisk port använda Portqry från metod 2 nedan

Metod 2:

  1. PortqryUI verktyget med den namngivna instansen och se resultatet. Om du ser meddelandet att UDP-port 1434 filtreras finns indikationer på att porten är blockerad i nätverket. Välj alternativ för instruktioner om hur du använder verktyget ”för fall 5: PortqryUI använder verktyget med SQL Server ” längst ned.

Först fastställa om SQL Server-instans lyssnar på dynamiska vs statisk port och använda det förfarande som är relevant för en viss situation. Så här avgör du om SQL lyssnar på dynamiska vs statiska portar, Välj alternativet ”för fall 5: lyssnar på dynamiska eller statiska portar? ” längst ned.

  • Fall: Dynamiska portar -> i det här fallet måste du se till att tjänsten SQL browser verkligen startade och UDP-port 1434 inte blockeras i brandväggen mellan klienten och servern. Om du inte gör någon av dem, bör du byta din SQL Server-instansen för att använda en statisk port och använda proceduren som beskrivs i Konfigurera en Server för att lyssna på en specifik TCP-Port (SQL Server Konfigurationshanteraren).

  • Fall: Statisk portkonfiguration och SQL Browser körs inte eller går inte att öppna UDP 1434 brandväggen -> i det här fallet måste du se till att statisk port anges i anslutningssträngen och att porten inte blockeras av brandväggen. För instruktioner, Välj alternativet ”fall 3 eller 5 fall: Lägg till port i undantagslistan för brandvägg” längst ned.

Det att lösa problemet?

Nedan hittar du några snabba skärmdumpar som visar konfigurationen av Windows-brandväggen för lyckade anslutningar till en standardinstans och en namngiven instans.

  • En standardinstans av SQL Server lyssnar på standardporten 1433 på Windows 2012 R2 server: I det här scenariot måste du kontrollera att ett undantag läggs till TCP-port 1433 i Windows-brandväggen

    1. Öppna Windows-brandväggen på datorn där SQL server standard-instans och klicka på Ny regel under inkommande regler.Inound rules  

    2. Välj alternativ för Port och klicka på Nästa.InboundRulePort  

    3. På nästa skärm:

      • Välj TCP som protokoll.

      • Markera specifika lokala portar och ange värdet som 1433 och på Nästa.TCP1433  

    4. På nästa skärm väljer du Tillåtanslutningen och klicka på Nästa för . AllowConnection 

    5. På nästa skärm väljer du det alternativ som bäst passar din miljö och på Nästa.NewInboundRule  

    6. I nästa skärm namnge regeln och ge en klar beskrivning för framtida referens och klicka på Slutför.NewInboundRuleName  

    7. När du har gjort, visas regeln skapas och aktiveras som standard. EnableInboundRule

  • Lägga till ett undantag för UDP-port 1434 aktivera anslutningar till en namngiven instans av SQLServer

    1. Öppna Windows-brandväggen på datorn där SQL server standard-instans och klicka på Ny regel under regler för inkommande trafik. Inound rules

    2. Välj alternativ för Port och klicka på Nästa.InboundRulePort  

    3. På nästa skärm:

      • Välja UDP som protokoll.

      • Markera specifika lokala portar och ange värdet som 1434 och klicka på Nästa. NewInboundUDP

    4. På nästa skärm väljer du Tillåt anslutningen och klicka på Nästa.AllowConnection  

    5. På nästa skärm väljer du det alternativ som bäst passar din miljö och på Nästa.NewInboundRule  

    6. Namnge regeln på nästa skärm och ge en klar beskrivning för framtida referens och klicka på Slutför. NewInboundName2

    7. När du har gjort, visas regeln skapas och aktiveras som standardEnableInboundRule2

Det att lösa problemet?

  1. I SQL Server Konfigurationshanteraren, i konsolfönstret Expandera Nätverkskonfiguration för SQL Serverprotokoll för < instansnamn > , och dubbelklicka sedan på TCP/IP.

  2. På fliken IP-adresser i dialogrutan Egenskaper för TCP/IP visas flera IP-adresser i formatet IP1, IP2, upp till IPAll. En av dessa är IP-adressen för kortet loopback 127.0.0.1. Ytterligare IP-adresser visas för varje IP-adress på datorn. (Du kommer förmodligen se både IP version 4 och IP-adresser av version 6.) Högerklicka på varje adress och klicka sedan på Egenskaper om du vill identifiera IP-adressen som du vill konfigurera.

  3. Om TCP dynamiska portar dialogrutan innehåller 0, anger att databasmotorn lyssnar på dynamiska portar. Om den innehåller ett visst antal innebär databasinstansen som lyssnar på en statisk port. TCPDynamicPorts

Mer information finns i så här:

Det att lösa problemet?

Hämtningsplats: PortqryUI

  1. Starta verktyget PortqryUI på klientdatorn (den dator där du har anslutningsproblem, för web apps, detta kan bero på IIS-servern.)

  2. Ange servernamnet på SQL Server-instansen eller servernamnet för SQL-vitutal i mål-IP eller FQDN för frågan.

  3. Välj fråga fördefinierade service och välj SQL-tjänsten i listan.

  4. Klicka på fråga och granska utdata och använder du följande tabell för ytterligare tips.

Typ av instans

Utdata från Portqry

Möjliga orsaker till anslutningsproblem med

Vad du kan göra?

Standardinstansen

TCP-port 1433 (ms-sql-s service): inte lyssnar

Visar något av följande:

  • SQL är inte igång.

  • TCP/IP är inte aktiverat på SQL server-protokollistan.

  • SQL som lyssnar på en annan port än standardporten (kontrollera errorlog)

  • Brandväggen mellan klienten och servern blockerar porten

  • Kontrollera SQL har startats

  • Kontrollera SQL-felloggen för portnumret och använder det i din anslutningssträngar som använder formatet < servernamn > portnummer

  • Arbeta med nätverk/windows-administratören så att TCP-port 1433 blockeras inte genom en brandvägg på nätverket eller genom Windows-brandväggen på SQL Server-system. Anmärkning: Om du vill lösa problemet med brandvägg du markera alternativet ”Resloving brandväggsfrågor” längst ned.

Standardinstansen

TCP-port 1433 (ms-sql-s service): Lyssna

  • Klientbibliotek är bra ansluta till SQL server-dator, men något annat i programmet lager kan vara orsaken till problemet.

Kontrollera om

  • Servernamnet angetts korrekt i anslutningssträngen

  • Om anslutningssträng använder portnummer, har den angetts korrekt i anslutningssträngen

  • Alla gamla alias som definierats i rutan.

Namngiven instans

UDP-port 1434 (ms sql m service): FILTRERADE

Visar något av följande

  • SQL-namngivna instanser har inte startats.

  • SQL browser har inte startats på datorn som är värd för SQL-instansen.

  • UDP-port 1434 blockeras av en brandvägg på SQL-servern eller nätverket mellan klienten och servern.

  • Tjänsten har startats.

  • SQL browser-tjänsten har startats.

  • Med systemadministratören nätverk och windows för att säkerställa den UDP-porten 1434 blockeras inte av en brandvägg på nätverket eller genom Windows-brandväggen på SQL Server-system.  Anmärkning: om du vill lösa problemet med brandvägg du markera alternativet ”Resloving brandväggsfrågor” längst ned.

Namngiven instans

UDP-port 1434 är LISTENING

  • Klientbibliotek är bra ansluta till SQL server-dator, men något annat i programmet lager kan vara orsaken till problemet.

  • Servernamnet angetts korrekt i anslutningssträngen

  • Portnumret anges felaktigt i anslutningssträngen

  • Alla gamla alias som definierats i rutan.

Exempel utdata: 

DeaultInstanceDefaultPort_Working

DeaultInstanceDefaultPort_NonWorking 

WorkingNameInstance

NonWorkingNameInstance

Det att lösa problemet?

Providern gränssnittet SSPI (Security Support) är en uppsättning Windows API: er som gör det möjligt för delegering och ömsesidig autentisering över alla allmänna data Transportskiktet, till exempel TCP/IP sockets. SSPI kan därför för en dator som kör ett Windows-operativsystem om du vill delegera säkert en säkerhetstoken för användaren från en dator till en annan över alla Transportskiktet som kan överföra raw byte data.

”Det går inte att generera SSPI-kontext”-fel uppstår när SSPI använder Kerberos-autentisering för att delegera över TCP/IP och Kerberos-autentisering kan inte slutföra nödvändiga åtgärder för att kunna delegera säkerhetstoken till användare i en måldator som kör SQL Server.

Välj alternativet ”Felsökning autentiseringsfel på problem med Kerberos ” längst ned för att granska och implementera stegen för ytterligare information om varför de Kerberos kan inte slutföras.

Det finns minst tre scenarier för problemet. Använd följande tabell för att gå igenom varje tillämplig scenario och vidta åtgärder för lämplig lösning.

Möjlig orsak

Förslag på lösningar

Doublehop scenarier på samma dator - du försöker göra en doublehop, men autentiseringsuppgifter för NTLM används i stället för Kerberos

Doublehop scenarier på samma dator, lägga till DisableLoopbackCheck eller BackConnectionHostNames registerposter enligt följande:

Doublehop scenarier över flera datorer – felet kan inträffa när Kerberos-anslutningar misslyckas på grund av problem med SPN.

Välj alternativet ”Felsökning autentiseringsfel på problem med Kerberos ” längst ned för att se detaljer.

Ingen doublehop ingår

Om ingen double-hop ingår kan sedan det också betyda att det finns dubblett SPN och klienten körs som LocalSystem eller andra datorkontot som hämtar autentiseringsuppgifter för NTLM i stället för Kerberos-referenser. Välj alternativet ” felsökning autentiseringsfel på problem med Kerberos ” till diagnostisera och lösa problem med SPN.

Lokala säkerhetsprinciper i Windows har konfigurerats för att förhindra användning av datorkontot för lokala konton kommer ut rutan

På Windows 2008 R2 och Windows 7 och senare, lokal säkerhetsprincip | Säkerhetsalternativ | Nätverkssäkerhet kan konfigureras för att använda datorkontot för lokala konton kommer ut rutan. den skulle i stället använda anonyma autentiseringsuppgifter.

 

Det att lösa problemet?

Detta innebär att LSASS inte gick att dekryptera säkerhetstoken med hjälp av konto för SQL Server. Det huvudsakliga skälet till detta är att SPN-namnet är kopplad till fel konto.

Att diagnostisera och lösa problemen SPN markerar du alternativet Felsökning autentiseringsfel på problem med Kerberos” och fortsätter.

Du kan till exempel se ett felmeddelande som liknar följande:

Källa: NETLOGON

Datum: 8/12/2012 20:22:16: 00

Händelse-ID: 5719

Uppgift kategori: None

Nivå: fel

Nyckelord: klassisk

Användare: saknas

Dator: < datornamn >

Beskrivning: den här datorn kunde inte konfigurera en säker session med en domänkontrollant i domänen på grund av följande: detta anrop avbröts. Detta kan leda till autentiseringsproblem. Kontrollera att datorn är ansluten till nätverket. Om problemet kvarstår, kontakta domänadministratören.

Tom sträng innebär att SQL som försökte hand av referenser till LSASS men det har uppstått problem. LSASS var inte tillgänglig eller domänkontrollanten kunde inte kontaktas.

I händelseloggarna på klienten och serverdatorerna för att se om det finns nätverks- eller Active Directory relaterade meddelanden runt problemet uppstår och om du vill arbeta med din domänadministratör för att åtgärda problemen.

 

Det att lösa problemet?

 

Om domännamnet anges och det är en felaktig SQL-inloggning. Om det har angetts och det är en felaktig integrerad Windows-inloggning. Granska följande tabell för orsaker och möjliga lösningar.

Orsak

Stegen

Den begärda databasen är offline eller på annat sätt inte tillgänglig

Kontrollera behörigheter och databastillgängligheten till i SQL Server Management Studio.

Användaren har inte behörighet till den begärda databasen.

Försök ansluta som en annan användare som har behörighet som systemadministratör rättigheter

Ytterligare tips, granskaFelsökning: inloggning misslyckades för användare 'x'.

Det att lösa problemet?

Du kan även se detta med IIS-program som använder anonym inloggning eller inloggning formulär där användarkontot inte personifieras. IIS-kontot för anonym (IUSR) eller app tillämpningspoolens konto personifierad i stället. IUSR-kontot är ett lokalt konto och kontot för programpoolen kan också vara ett lokalt konto.

Det här felet inträffar vanligtvis om användaren är inloggad med ett lokalt konto istället för ett domänkonto. Om anslutning till tjänster av rutan, kan datorn autentiseringsuppgifter skickas. I vissa fall kan du lägga till kontot som en inloggning på backend-servern. I andra fall kanske du vill logga in med en domän konto och tillhandahålla rätt behörighet till detta konto till tjänsten remote.

Det att lösa problemet?

Kerberos-autentiseringsfel kan inträffa på grund av olika skäl. Viktiga orsaker och lösningar är markerade nedan:

Typ av problem

Förslag på lösningar

SPN-problem:

  • Saknade SPN: SPN har inte registrerats i Active directory

  • Felaktiga SPN-poster: SPN finns men portnumret är felaktig eller det finns på ett annat konto än kontot SQL.

  • Dubbla SPN-namn: Samma SPN-namnet finns på flera konton i active directory

Kontrollera ”med hjälp av Kerberos Configuration manager för att diagnostisera och åtgärda problem med SPN och delegeringi följande stycke att diagnostisera och lösa problem med SPN. Anmärkning: För ingående förståelse av SPN, Kerberos och andra relaterade begrepp granska informationen i följande KB-artikel: Felsökning av felmeddelandet ”Det går inte att generera SSPI-kontext”

SQL Service konton som inte är betrodd för delegering. Om du använder kontot Lokalt System, ska mitten servern vara betrodd för delegering i active directory

UseKerberos configuration manager fliken delegering att bekräfta och arbeta med din Active directory-administratören att aktivera delegering för kontot. Kontrollera ”med hjälp av Kerberos Configuration manager för att diagnostisera och åtgärda problem med SPN och delegering” information i följande stycke

Felaktig namnmatchning: namnet på servern kan matcha till en annan IP-adress än som registreras av DNS-servern i ditt nätverk.

ping - en < your_target_machine > (Använd -4 och -6 för IPv4- och IPv6-specifikt) ping - en < Your_remote_IPAddress > nslookup (Skriv dina lokala och fjärranslutna datornamn och IP-adress flera gånger) Leta efter eventuella avvikelser och avvikelser på returnerade resultatet. Riktigheten i DNS-konfigurationen i nätverket är mycket viktig för SQL-anslutning. Felaktig DNS-post orsaka senare av alla sorters anslutningsproblem. Se länken exempelvis ”går inte att generera SSPI sammanhang” felmeddelande förgiftade DNS-.

Brandväggar eller andra nätverksenheter som hindrar anslutningar från klienten till domänkontrollanten: SPN-namn som är lagrade i active directory och om klienterna inte kan kommunicera med AD anslutningen kan inte fortsätta ytterligare).

Kontrollera följande länkar för mer information

Obs!

  1. När en instans av SQL Server databasmotor startar försöker SQL Server registrera tjänstens Huvudnamn för SQL Server-tjänsten. När instansen stoppas försöker SQL Server avregistrera SPN. För att detta ska hända, måste kontot SQL ReadServicePrincipalName och WriteServicePrincipalName rättigheter i active directory. Men om kontot inte har dessa rättigheter sker inte automatisk registrering SPN och du behöver arbeta med Active Directory-administratören för att registrera dessa för SQL-instanser att aktivera Kerberos-autentisering. I det här fallet om du använder en namngiven instans, blir det mer praktiskt att använda en statisk port för instansen. Om du använder dynamiska portar portnumret kan ändras varje gång tjänsten startas och manuellt registrerade SPN för instansen är inte längre giltig. Mer information finns i följande avsnitt i SQL Server Books Online: Registrera tjänstens huvudnamn för Kerberos-anslutningar

  2. I miljöer där SQL är klustrad automatisk registrering av SPN rekommenderas inte eftersom det kan ta längre tid att avregistrera SPN och r-register SPN-namnet i Active directory än den tid det tar för SQL anslutas. Om SPN-registrering inte sker i tid, kan det förhindra SQL kommer online eftersom Klusteradministratören inte ansluta till SQLServer.

Med hjälp av Kerberos Configuration manager för att diagnostisera och åtgärda problem med SPN och delegering

  1. Hämta Microsoft® Kerberos Konfigurationshanteraren för SQL Server® och installera den på en klientdator.

  2. Starta verktyget med ett domänkonto som helst med ett konto som har behörighet att skapa SPN-namn i active directory. Se den under bild:

    KerberosConfigManager

  3. Anslut till SQL Server som du vill samla in Kerberos fel relaterad information:

    ConnectKerberosConfigManager

  4. När du är ansluten, kan du se olika flikar som visas nedan:

    System: har den grundläggande systeminformationen. KerConfigManager_System

    SPN:Ger information om instanser av alla SQL-instanser som finns på målservern SPN och ger olika alternativ som anges nedan. Använd den här fliken för att hitta det saknade eller felkonfigurerad SPN och knapparna Generera eller korrigering för dessa problem. KerConfigManager_SPN

    • Genereraalternativet kan du skapa skript för generering av SPN. Klicka på Generera aktiveras knappen av följande dialogruta: KerConfigManager_GenerateSPN

      Detta alternativ skapar en cmd -fil som kan köras från Kommandotolken för att skapa SPN-namnet.

      Innehåll i generateSPNs, kommer att vara av följande slag:

                          :: This script is generated by the Microsoft(c) SQL Server(c) Kerberos Configuration Manager tool.
      :: The script may update the system information, SPN settings and Delegation configurations of a given server.
      :: SPN and Delegation configuration updates require Windows Domain Administrator permission to execute.
      :: A Domain Admin should review the configurations recommended by this tool and take appropriate actions to enable Kerberos authentication.
      :: Please contact Microsoft Support if Kerberos connection problem persists.
      :: The file is intended to be run in domain "<DomainName>.com"
      :: Corrections for MSSQLSvc/<HostName>.<DomainName>.com
      SetSPN -s MSSQLSvc/<HostName>.<DomainName>.com UserName

      SetSPN-alternativet används bara för att skapa ett SPN-namn under tjänstkontot för SQL Server.

    • Rätta alternativet lägger till SPN-namnet så länge du har rätt att lägga till SPN och visar följande verktyg:

      KerbConfigManager_Fix 

      Obs!

      Verktyget ger bara alternativ för korrigering och generera för standardinstanser och namngivna instanser med statiska portar. För namngivna instanser som använder dynamisk port är rekommendationen att växla mellan dynamiska och statiska portar eller ge nödvändiga behörigheter för kontot att registrera och avregistrera SPN varje gång tjänsten startas. Annars har du avregistrera och registrera motsvarande SPN-namn varje gång SQL-tjänsten startas manuellt.

    • Fliken delegering: fliken identifierar eventuella problem med kontot service konfiguration för delegering. Detta är särskilt användbart vid felsökning av länkade serverproblem. Till exempel om SPN-namnen checka ut fint, men om du fortfarande får problem med länkad server frågar den kunde uppgift som kontot inte konfigureras om du vill delegera behörigheter. Granska avsnittet Books online på Konfigurera länkade servrar för delegeringför ytterligare information.

      KerbConfigManger_Delegation 

  5. När du har åtgärdat SPN-namnen kör verktyget Konfigurationshanteraren för Kerberos och säkerställa SPN och delegering flikar inte längre rapport några felmeddelanden och försök anslutningen från programmet.

Granska följande länkar för mer information:

Det att lösa problemet?

En timeout är när något tar längre tid än det är tillåtet. I grunden vi avbryter vad vi försökte göra inte vänta i oändlighet och eventuellt blockera andra saker och Lägg ett program. Från ett perspektiv för anslutning, i sin grundläggande form ser vi detta på två sätt. En är en timeout för anslutningen, den andra är en fråge-timeout. Därför bör du först granska fullständiga anropsstacken i felmeddelandet för att avgöra om det är en tidsgräns för anslutning eller kommandotimeout.

Obs!

Standardvärdena för dessa parametrar som kan ställas in via kod, anslutningssträngen och andra metoder är följande: Timeout för anslutning – 15 sekunder Frågan eller kommandotimeout – 30 sekunder

System.Data.SqlClient.SqlException: Tidsgränsen har överskridits. Tidsgränsen uppnåddes slutförs eller om servern svarar inte.  vid System.Data.SqlClient.SqlInternalConnection.OnError (SqlException-undantag, booleska breakConnection)  vid System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj)  vid System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 fel)  vid System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, TdsParserStateObject stateObj)  vid System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()  vid System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake (Boolean kryptera booleska trustServerCert, Boolean & marsCapable)  vid System.Data.SqlClient.TdsParser.Connect (information om information om SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire Boolean kryptera booleska trustServerCert, booleska integratedSecurity SqlConnectionowningObject)  vid System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfoserverInfo, sträng nyttlösenord, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)  vid System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover (String värd, sträng nyttlösenord, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)  vid System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject, SqlConnectionString connectionOptions, sträng nyttlösenord, Boolean redirectedUserInstance)  vid System.Data.SqlClient.SqlInternalConnectionTds... ctor (DbConnectionPoolIdentity identitet, SqlConnectionString connectionOptions, objekt providerInfo, sträng nyttlösenord, SqlConnection owningObject, Boolean redirectedUserInstance)  vid System.Data.SqlClient.SqlConnectionFactory.CreateConnection (DbConnectionOptions-alternativ, poolGroupProviderInfo objekt, DbConnectionPool pool, DbConnection owningConnection)  vid System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions alternativ) vid System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection owningObject) vid System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection owningObject)  vid System.Data.ProviderBase.DbConnectionPool.GetConnection (DbConnection owningObject)  vid System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection)  vid System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection, outerConnection, DbConnectionFactory connectionFactory)  vid System.Data.SqlClient.SqlConnection.Open() <--SqlConnection och öppna talar om för oss att vi försöker att öppna en anslutning. Så är det inte relaterat till en fråga.

System.Data.SqlClient.SqlException: Tidsgränsen har överskridits. Tidsgränsen uppnåddes slutförs eller om servern svarar inte.  vid System.Data.SqlClient.SqlConnection.OnError (SqlException-undantag, booleska breakConnection)  vid System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj)  vid System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand-cmdHandler, SqlDataReader dataström, BulkCopySimpleResultSet, bulkCopyHandler, TdsParserStateObject stateObj)  vid System.Data.SqlClient.SqlDataReader.ConsumeMetaData()  vid System.Data.SqlClient.SqlDataReader.get_MetaData()  vid System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, sträng resetOptionsString) vid System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Booleska returnStream, booleska asynkron)  vid System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, booleska returnStream, String metod, DbAsyncResult resultat)  vid System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, booleska returnStream, sträng-metod)  vid System.Data.SqlClient.SqlCommand.ExecuteScalar() <--SqlCommand används för att arbeta med en fråga, inte en anslutning. ExecuteScalar används för att köra en fråga. Du kan också se andra objekt som en ExecuteReader eller ExecuteNonQuery till exempel.

Stegen:

Båda dessa problem kan vara miljö- eller SQL Server-relaterade. Det kan exempelvis vara att du har en långsam nätverksanslutning eller prestandaproblem i fråga. Det finns inga regler för hårda och snabba som vad kunde göras och mer undersökningar kan vara nödvändigt att vad kan vara orsaken till problemet. Öka timeout-värde är mycket vanligare än öka tidsgränsen för anslutningen. Detta beror på att när du försöker ansluta till en datakälla anslutningen normalt sker mycket snabbt (vanligtvis inom en tidsrymd av sekunderna milliekvivalenter).

Typ

Vad du kan göra

Timeout för anslutning

  1. Öka ConnectionTimout i programmet.

  2. Kontrollera om porten som används av SQL blockeras på nätverket med ett verktyg som Portqry.  Välj alternativet ”PortqryUI använder verktyget med SQL Server” längst ned för instruktioner om hur du använder den.

Kommandotimeout

  1. Öka värdet för CommandTimeout i programmet och även finjustera frågor som hämtar körs på serverdelen.

Mer tips och förslag kontrollera: Felsökning: tidsgränsen gått ut.

Det att lösa problemet?

Det beror ofta på om anslutningar inte stängs korrekt och fullständig fel kan se ut så här:

System.InvalidOperationException: Tidsgränsen har överskridits. Tidsgränsen uppnåddes erhålla en anslutning från poolen.

 

Detta kan bero på att alla poolade anslutningar användes och poolens storlek har uppnåtts.

Detta kan oftast undvikas genom att följa bästa praxis som beskrivs i följande blogginlägg på MSDN: tidsgränsen gått ut. Tidsgränsen uppnåddes erhålla en anslutning från poolen.

Det att lösa problemet?

UDL-filer ger ett enkelt sätt att testa anslutningar till SQLServer från klienter eller andra system.

  1. Aktivera alternativet att visa filnamnstillägg i Windows explorer. För att göra detta:

    1. På Windows 8 och senare system: antingen gå till File Explorer - AlternativKontrollpanelen eller Skriv bara ”Dölj” i Windows search och avmarkera Dölj filnamnstillägg för kända filtyperpå fliken Visa.

    2. Windows 7 och tidigare versioner: Läs den här KB. Win7ViewExtFile

  2. Navigera till mappen där du vill skapa en .udl-fil (till exempel c:\temp)

  3. Skapa en ny textfil (sqlconn.txt) och Byt namn på filnamnstillägget från .txt till .udl (klicka på Ja i varningsmeddelandet om hur du ändrar filnamnstillägget)

  4. Dubbelklicka på .udl-filen från steg 3 och gör följande:

    1. Välj fliken Provider den provider som du använder i ditt program (till exempel SQL Server Native Client)

    2. Välj eller ange SQL Server och resten av parametrarna som är relevanta för ditt program i fliken anslutning

  5. Klicka på Testa anslutning.

Ytterligare information och skärmdumpar finns följande blogginlägg på MSDN:

Grunderna i första: ”UDL-Test”

Det att lösa problemet?

Grattis! Vi är glada över att detta hjälpte dig lösa problemet.

Vi kan tyvärr att handboken inte lösa ditt problem. Vi rekommenderar att du ansluter Microsoft SQL-Community för hjälp.

Här är några ytterligare resurser som du kan ha nytta av:

Vad gör den här guiden?Majoritet av problem med anslutningen till SQLServer kan lösas genom att gå igenom en enkel checklista och en sekvens av enkla steg. Den här interaktiva genomgång syftar till att ge samma för olika anslutningsfel som ansluter till SQL Server.

Vem är den till för?

Alla som arbetar med SQL Server och som har anslutningsproblem.

Hur fungerar det?

Innan du gräver felsökning av specifika anslutning fel rekommenderar vi men ej obligatoriskt samla in de nödvändiga artiklarna och kör ned en snabb checklista. Även om de kan visas och ta en extra några minuter av din tid som de kan hjälpa dig till upplösningen som tidigare.

Uppskattad tid för slutförande

Varierar beroende på ditt scenario, men kan ta allt mellan 15 min till 2 timmar.

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×