Dela via


Felsökningslänk – Azure SQL Managed Instance

gäller för:Azure SQL Managed Instance

I den här artikeln lär du dig hur du övervakar och felsöker problem med en länk mellan SQL Server och Azure SQL Managed Instance.

Du kan kontrollera tillståndet för länken med Transact-SQL (T-SQL), Azure PowerShell eller Azure CLI. Om du får problem kan du använda felkoderna för att felsöka problemet.

Många problem med att skapa länken kan lösas genom att kontrollera nätverket mellan de två instanserna och verifiera miljön har förberetts korrekt för länken.

Inledande seedning

När du upprättar en länk mellan SQL Server och Azure SQL Managed Instance finns det en inledande seeding-fas innan datareplikeringen startar. Den inledande seedningsfasen är den längsta och dyraste delen av åtgärden. När den första seedingen har slutförts synkroniseras data och endast efterföljande dataändringar replikeras. Den tid det tar för den första seedningen att slutföras beror på storleken på data, arbetsbelastningsintensiteten på de primära databaserna och hastigheten på länken mellan nätverken för de primära och sekundära replikerna.

Om länkens hastighet mellan de två instanserna är långsammare än nödvändigt påverkas sannolikt tiden för seedning märkbart. Du kan använda den angivna seedningshastigheten, den totala storleken på data och länkhastigheten för att uppskatta hur lång tid den inledande seeding-fasen tar innan datareplikeringen startar. För en enskild databas på 100 GB skulle den inledande startfasen till exempel ta cirka 1,2 timmar om länken kan skicka 84 GB per timme och om det inte finns några andra databaser som har seedats till en annan länk. Om länken bara kan överföra 10 GB per timme kan det ta cirka 10 timmar att skicka en databas på 100 GB. Om det finns flera databaser att replikera via flera länkar körs seeding parallellt, och när den kombineras med en långsam länkhastighet kan den inledande seeding-fasen ta betydligt längre tid, särskilt om parallell seeding av data från alla databaser överskrider den tillgängliga länkbandbredden.

Viktigt!

Den inledande seedningsfasen kan ta dagar med extremt låg hastighet eller belastade länkar. I det här fallet kan tiden gå ut när man skapar länken. Länkskapandet avbryts automatiskt efter 6 dagar.

Om du stöter på problem med en länk kan du använda SQL Server Management Studio (SSMS), Transact-SQL (T-SQL), Azure PowerShell eller Azure CLI för att få information om länkens aktuella tillstånd.

Använd T-SQL för en snabb statusinformation om länktillståndet och använd sedan Azure PowerShell eller Azure CLI för en omfattande information om länkens aktuella tillstånd.

Länkövervakning är tillgängligt från och med SQL Server Management Studio (SSMS) 21.0 (förhandsversion).

Följ dessa steg för att kontrollera länktillståndet i SSMS:

  1. Anslut till en replik som innehåller länken.

  2. I Object Explorer expanderar du Always On High Availability och expanderar sedan Tillgänglighetsgrupper.

  3. Högerklicka på namnet på länken och välj sedan Egenskaper för att öppna fönstret Länkegenskaper :

    Skärmbild av högerklicksmenyn på en länk i SSMS med egenskaper markerade.

  4. Fönstret Länkegenskaper visar användbar information om länken, till exempel replikinformation, länktillstånd och utgångsdatum för slutpunktscertifikatet:

    Skärmbild av fönstret för länkspecifikationer i SSMS.

Värdet replicaState beskriver den aktuella länken. Om tillståndet även innehåller Fel uppstod ett fel under åtgärden som anges i tillståndet. Till exempel anger LinkCreationError att ett fel uppstod när länken skapades.

Några möjliga replicaState värden är:

  • CreatingLink: Inledande urval
  • LinkSynchronizing: Datareplikering pågår
  • LinkFailoverInProgress: Redundans pågår

En fullständig lista över egenskaper för länktillstånd finns i kommandot Distribuerade tillgänglighetsgrupper – GET REST API.

Det finns två olika kategorier av fel som du kan stöta på när du använder länken – fel när du försöker initiera länken och fel när du försöker skapa länken.

Följande fel kan inträffa när en länk initieras (länktillstånd: LinkInitError):

  • Fel 41962: Åtgärden avbröts eftersom länken inte initierades inom 5 minuter. Kontrollera nätverksanslutning och försök igen.
  • Fel 41973: Länk kan inte upprättas eftersom slutpunktscertifikat från SQL Server inte importerades till Azure SQL Managed Instance korrekt.
  • Fel 41974: Det går inte att upprätta länken eftersom slutpunktscertifikat från SQL Managed Instance inte importerades korrekt till SQL Server.
  • Fel 41976: Tillgänglighetsgruppen svarar inte. Kontrollera namn och konfigurationsparametrar och försök igen.
  • Fel 41986: Det går inte att upprätta länken eftersom anslutningen misslyckades eller att den sekundära repliken inte svarar. Kontrollera namn, konfigurationsparametrar och nätverksanslutning och försök sedan igen.
  • Fel 47521: Det går inte att upprätta länken eftersom den sekundära servern inte tog emot begäran. Kontrollera att tillgänglighetsgruppen och databaserna är felfria på den primära servern och försök igen.

Följande fel kan inträffa när du skapar en länk (länktillstånd: LinkCreationError):

  • Fel 41977: Måldatabasen svarar inte. Kontrollera länkparametrarna och försök igen.

  • För tidig loggtrunkering: Om transaktionsloggen trunkeras innan den första seedingen är klar ser du förmodligen något av följande fel:

    • Fel 1408: Fjärrkopian av databasen "%.*ls" återställs inte tillräckligt långt för att aktivera databasspegling eller för att ansluta den till tillgänglighetsgruppen.
    • Fel 1412: Fjärrkopian av databasen "%.*ls" har inte återställts till en tidpunkt som ingår i den lokala kopian av databasloggen.

    För att lösa det här problemet måste du ta bort och återskapa länken.
    Undvik det här problemet genom att pausa säkerhetskopieringar av transaktionsloggar på SQL Server för databas som replikeras under den inledande seeding-fasen.

Inkonsekvent systemtillstånd efter tvingad överlämning

Efter en tvingad redundansväxlingkan du stöta på ett split-brain-scenario där båda replikerna har den primära rollen, vilket lämnar länken i ett inkonsekvent tillstånd. Detta kan inträffa om du redundansväxlar till den sekundära repliken under ett haveri och den primära repliken är online igen.

Bekräfta först att du är i ett scenario med delad hjärna. Du kan göra det med hjälp av SQL Server Management Studio (SSMS) eller Transact-SQL (T-SQL).

Anslut till både SQL Server och SQL-hanterad instans i SSMS och i Object Explorer, expandera Tillgänglighetsrepliker under noden Tillgänglighetsgruppen i Always On High Availability. Om två olika repliker visas som (primär)är du i ett scenario med delad hjärna.

Du kan också köra följande T-SQL-skript på både SQL Server och SQL Managed Instance för att kontrollera replikernas roll:

-- Execute on SQL Server and SQL Managed Instance 
USE master
DECLARE @link_name varchar(max) = '<DAGName>'
SELECT
   ag.name [Link name], 
   rs.role_desc [Link role] 
FROM
   sys.availability_groups ag 
   JOIN sys.dm_hadr_availability_replica_states rs 
   ON ag.group_id = rs.group_id 
WHERE 
   rs.is_local = 1 AND ag.is_distributed = 1 AND ag.name = @link_name 
GO

Om båda instanserna listar PRIMÄR i kolumnen för Länkroll, är du i ett delad-hjärna-scenario.

Lös det delade hjärntillståndet genom att först göra en säkerhetskopia på den replik som var den ursprungliga primära. Om den ursprungliga primära var SQL Server tar du en säkerhetskopia av tail log. Om den ursprungliga primära instansen var SQL Managed Instance ska du ta en kopi-endast fullständig säkerhetskopiering. När säkerhetskopieringen är klar anger du den distribuerade tillgänglighetsgruppen till den sekundära rollen för repliken som tidigare var den ursprungliga primära men som nu kommer att vara den nya sekundära.

I händelse av ett verkligt haveri förutsätter du till exempel att du har tvingat fram en redundansväxling av SQL Server-arbetsbelastningen till Azure SQL Managed Instance och tänker fortsätta köra arbetsbelastningen på SQL Managed Instance, göra en säkerhetskopiering av en slutlogg på SQL Server och sedan ange den distribuerade tillgänglighetsgruppen till den sekundära rollen på SQL Server, till exempel följande exempel:

--Execute on SQL Server 
USE master
ALTER AVAILABILITY GROUP [<DAGName>] 
SET (ROLE = SECONDARY) 
GO 

Kör sedan en planerad manuell redundansväxling från SQL Managed Instance till SQL Server med hjälp av länken, till exempel följande exempel:

--Execute on SQL Managed Instance 
USE master
ALTER AVAILABILITY GROUP [<DAGName>] FAILOVER 
GO 

Certifikatet har upphört att gälla

Det är möjligt att certifikatet som används för länken upphör att gälla. Om certifikatet upphör att gälla misslyckas länken. Lös problemet genom att rotera certifikatet.

Testa nätverksanslutning

Dubbelriktad nätverksanslutning mellan SQL Server och SQL Managed Instance krävs för att länken ska fungera. När du har öppnat portar på SQL Server-sidan och konfigurerat en NSG-regel på SQL Managed Instance-sidan testar du anslutningen med antingen SQL Server Management Studio (SSMS) eller Transact-SQL.

Testa nätverket genom att skapa ett tillfälligt SQL Agent-jobb på både SQL Server och SQL Managed Instance för att kontrollera anslutningen mellan de två instanserna. När du använder Network Checker i SSMS skapas jobbet automatiskt åt dig och tas bort när testet har slutförts. Du måste ta bort SQL Agent-jobbet manuellt om du testar nätverket med hjälp av T-SQL.

Not

Det finns för närvarande inte stöd för att köra PowerShell-skript av SQL Server-agenten på SQL Server i Linux, så det går för närvarande inte att köra Test-NetConnection från SQL Server Agent-jobbet på SQL Server i Linux.

Om du vill använda SQL-agenten för att testa nätverksanslutningen behöver du följande krav:

  • Användaren som utför testet måste ha behörighet att skapa ett jobb (antingen som en sysadmin eller tillhör SQLAgentOperator-rollen för msdb) för både SQL Server och SQL Managed Instance.
  • SQL Server Agent-tjänsten måste köra på SQL Server. Eftersom agenten är aktiverad som standard på SQL Managed Instance krävs ingen ytterligare åtgärd.

Följ dessa steg för att testa nätverksanslutningen mellan SQL Server och SQL Managed Instance i SSMS:

  1. Anslut till den instans som ska vara den primära repliken i SSMS.

  2. I Object Explorerexpanderar du databaser och högerklickar på den databas som du vill länka till den sekundära. Välj Uppgifter>länken Azure SQL Managed Instance>Test Connection för att öppna guiden Nätverkskontroll:

    Skärmbild av objektutforskaren i S S M S, där testanslutningen är markerad i snabbmenyn för databaslänken.

  3. Välj Nästa på sidan Introduktion i verktyget Network Checker.

  4. Om alla krav uppfylls på sidan Förutsättningar väljer du Nästa. Lös annars eventuella ouppfyllda krav och välj sedan Kör validering igen.

  5. På sidan Inloggning väljer du Inloggning för att ansluta till en annan instans som kommer att fungera som den sekundära repliken. Välj Nästa.

  6. Kontrollera informationen på sidan Ange nätverksalternativ och ange en IP-adress om det behövs. Välj Nästa.

  7. På sidan Sammanfattning granskar du de åtgärder som guiden vidtar och väljer sedan Slutför för att testa anslutningen mellan de två replikerna.

  8. Granska sidan Resultat för att verifiera att anslutningen finns mellan de två replikerna, och välj sedan Stäng för att avsluta.

Försiktighet

Fortsätt endast med nästa steg om du har verifierat nätverksanslutningen mellan käll- och målmiljöerna. Annars kan du felsöka problem med nätverksanslutningen innan du fortsätter.

Mer information om länkfunktionen finns i följande resurser: