Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              gäller för:SQL Server
Azure SQL Managed Instance
Felsökning av replikeringsfel kan vara frustrerande utan grundläggande förståelse för hur transaktionsreplikering fungerar. Det första steget när du skapar en publikation är att låta ögonblicksbildsagenten skapa ögonblicksbilden och spara den i mappen ögonblicksbild. Därefter tillämpar distributionsagenten ögonblicksbilden på prenumeranten.
Den här processen skapar publikationen och placerar den i synkroniseringstillståndet . Synkroniseringen fungerar i tre faser:
- Transaktioner sker på objekt som replikeras och markeras "för replikering" i transaktionsloggen. 
- Loggläsaragenten söker igenom transaktionsloggen och letar efter transaktioner som har markerats som "för replikering". Dessa transaktioner sparas sedan i distributionsdatabasen. 
- Distributionsagenten söker igenom distributionsdatabasen med hjälp av läsartråden. Genom att använda skrivtråden ansluter agenten sedan till prenumeranten för att tillämpa ändringarna på prenumeranten. 
Fel kan inträffa i alla steg i den här processen. Att hitta dessa fel kan vara den mest utmanande aspekten av felsökning av synkroniseringsproblem. Tack och lov gör användningen av Replikeringsövervakaren den här processen enkelt.
Anmärkning
Syftet med den här felsökningsguiden är att lära ut felsökningsmetoder. Den är utformad för att inte lösa ditt specifika fel, utan för att ge allmän vägledning för att hitta fel med replikering. Vissa specifika exempel tillhandahålls, men lösningen för dem kan variera beroende på miljön. Exempelfel baseras på handledningen Konfigurera replikering mellan två fullständigt anslutna servrar (transaktionella).
Felsökningsmetodik
Frågor att ställa
- Var i synkroniseringsprocessen misslyckas replikeringen?
- Vilken agent har ett fel?
- När fungerade replikeringen senast? Har något förändrats sedan dess?
Steg att vidta
- Använd Replikeringsövervakaren för att identifiera vid vilken tidpunkt replikeringen stöter på felet (vilken agent?): - Om det uppstår fel i avsnittet Utgivare till distributör är problemet med Log Reader-agenten.
- Om det uppstår fel i avsnittet Distributör till prenumerant gäller problemet distributionsagenten.
 
- Titta igenom agentens jobbhistorik i Jobbaktivitetsövervakaren för att identifiera information om felet. Om jobbhistoriken inte visar tillräckligt med information kan du aktivera utförlig loggning på den specifika agenten. 
- Försök att fastställa en lösning för felet. 
Hitta fel med ögonblicksbildsagenten
Ögonblicksbildsagenten genererar ögonblicksbilden och skriver den till den angivna ögonblicksbildmappen.
- Visa status för din ögonblicksbildsagent: - I Object Explorer expanderar du noden Lokal publikation under Replikering. 
- Högerklicka på AdvWorksProductTrans>Visa status för Snapshot Agent. 
   
- Om ett fel rapporteras i Status för ögonblicksbildsagenten kan du hitta mer information i jobbhistoriken för ögonblicksbildsagenten: - Expandera SQL Server-agenten i Object Explorer och öppna Jobbaktivitetsövervakaren. 
- Sortera efter kategori och identifiera ögonblicksbildsagenten efter kategorin REPL-Snapshot. 
- Högerklicka på ögonblicksbildsagenten och välj sedan Visa historik. 
 
- I historiken för ögonblicksbildsagenten väljer du relevant loggpost. Det här är vanligtvis en rad eller två före posten som rapporterar felet. (Ett rött X anger fel.) Granska meddelandetexten i rutan under loggarna: - The replication agent had encountered an exception. Exception Message: Access to path '\\node1\repldata.....' is denied.
Om dina Windows-behörigheter inte har konfigurerats korrekt för ögonblicksbildmappen visas felet "åtkomst nekas" för ögonblicksbildsagenten. Du måste verifiera behörigheter till mappen där ögonblicksbilden lagras och se till att kontot som används för att köra Ögonblicksbildsagenten har behörighet att komma åt resursen.
Hitta fel med Log Reader-agenten
Loggläsaragenten ansluter till din utgivardatabas och söker igenom transaktionsloggen efter transaktioner som har markerats som "för replikering". Sedan läggs dessa transaktioner till i distributionsdatabasen.
- Anslut till utgivaren i SQL Server Management Studio. Expandera servernoden, högerklicka på mappen Replikering och välj sedan Starta replikeringsövervakaren:   - Replikeringsövervakaren öppnas: 
- Det röda X anger att publikationen inte synkroniseras. Expandera Mina utgivare till vänster och expandera sedan relevant utgivarserver. 
- Välj publikationen AdvWorksProductTrans till vänster och leta sedan efter det röda X:et på en av flikarna för att identifiera var problemet finns. I det här fallet finns det röda X på fliken Agenter , så en av agenterna får ett fel: 
- Välj fliken Agenter för att identifiera vilken agent som stöter på felet: 
- I den här vyn visas två agenter, Snapshot Agent och Log Reader Agent. Den som stöter på ett fel har det röda X:et. I det här fallet är det loggläsaragenten. - Dubbelklicka på raden som rapporterar felet för att öppna agenthistoriken för Log Reader Agent. Den här historiken innehåller mer information om felet: - Status: 0, code: 20011, text: 'The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.'. The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'. Status: 0, code: 15517, text: 'Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission.'. Status: 0, code: 22037, text: 'The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.'.
- Felet uppstår vanligtvis när utgivarens databasägare inte har angetts korrekt. Detta kan inträffa när en databas återställs. Så här kontrollerar du det: - Expandera Databaser i Objektutforskaren. 
- Högerklicka på AdventureWorks2022>Egenskaper. 
- Kontrollera att en ägare finns under sidan Filer . Om den här rutan är tom är det den troliga orsaken till problemet. 
 
- Om ägaren är tom på sidan Filer, öppna ett nytt frågefönster i - AdventureWorks2022-databasens kontext. Kör följande T-SQL-kod:- -- set the owner of the database to 'sa' or a specific user account, without the brackets. EXECUTE sp_changedbowner '<useraccount>'; -- example for sa: exec sp_changedbowner 'sa' -- example for user account: exec sp_changedbowner 'sqlrepro\administrator'
- Du kan behöva starta om Log Reader-agenten: - Expandera SQL Server Agent-noden i Object Explorer och öppna Jobbaktivitetsövervakaren. 
- Sortera efter kategori och identifiera Log Reader Agent efter kategorin REPL-LogReader . 
- Högerklicka på jobbet Log Reader Agent och välj Starta jobb i Steg. 
 
- Kontrollera att publikationen nu synkroniseras genom att öppna Replikeringsövervakaren igen. Om den inte redan är öppen kan du hitta den genom att högerklicka på Replikering i Object Explorer. 
- Välj publikationen AdvWorksProductTrans , välj fliken Agenter och dubbelklicka på Log Reader Agent för att öppna agenthistoriken. Nu bör du se att Loggläsaragenten körs och antingen replikerar kommandon eller har "inga replikerade transaktioner":   
Hitta fel med distributionsagenten
Distributionsagenten hittar data i distributionsdatabasen och tillämpar dem sedan på prenumeranten.
- Anslut till utgivaren i SQL Server Management Studio. Expandera servernoden, högerklicka på mappen Replikering och välj sedan Starta replikeringsövervakaren. 
- I Replikeringsövervakaren väljer du publikationen AdvWorksProductTrans och väljer fliken Alla prenumerationer . Högerklicka på prenumerationen och välj Visa information:   
- Dialogrutan Historik för distributör till prenumerant öppnas och anger vilket fel agenten stöter på:   - Error messages: Agent 'NODE1\SQL2016-AdventureWorks2022-AdvWorksProductTrans-NODE2\SQL2016-7' is retrying after an error. 89 retries attempted. See agent job history in the Jobs folder for more details.
- Felet anger att distributionsagenten försöker igen. Mer information finns i jobbhistoriken för distributionsagenten: - Expandera SQL Server Agent i Objectutforskaren >Jobbaktivitetsövervakaren. 
- Sortera jobben efter kategori. 
- Identifiera distributionsagenten efter kategorin REPL-Distribution. Högerklicka på agenten och välj Visa historik. 
 
- Välj en av felposterna och visa feltexten längst ned i fönstret: - Message: Unable to start execution of step 2 (reason: Error authenticating proxy NODE1\repl_distribution, system error: The user name or password is incorrect.)
- Det här felet anger att lösenordet som distributionsagenten använde är felaktigt. Så här löser du det: - Expandera Replication noden i Object Explorer. 
- Högerklicka på prenumerationens >egenskaper. 
- Välj ellipsen (...) bredvid Agentprocesskonto och ändra lösenordet. 
 
- Kontrollera Replikeringsövervakaren igen genom att högerklicka på Replikering i Object Explorer. Ett rött X under Alla prenumerationer anger att distributionsagenten fortfarande stöter på ett fel. - Öppna prenumeranthistorik för distribution genom att högerklicka på prenumerationen i Replikeringsövervakaren>Se detaljer. Här är felet nu annorlunda:   - Connecting to Subscriber 'NODE2\SQL2016' Agent message code 20084. The process could not connect to Subscriber 'NODE2\SQL2016'. Number: 18456 Message: Login failed for user 'NODE2\repl_distribution'.
- Det här felet anger att distributionsagenten inte kunde ansluta till prenumeranten eftersom inloggningen misslyckades för användaren NODE2\repl_distribution. Om du vill undersöka saken ytterligare ansluter du till prenumeranten och öppnar den aktuella SQL Server-felloggen under noden Hantering i Object Explorer: - Om du ser det här felet saknas inloggningen för prenumeranten. Information om hur du löser det här felet finns i Säkerhetskrav för replikering. 
- När inloggningsfelet har lösts kontrollerar du Replikeringsövervakaren igen. Om alla problem har åtgärdats bör du se en grön pil bredvid Publikationsnamn och statusen Körs under Alla prenumerationer. - Högerklicka på prenumerationen för att öppna historiken för distributör till prenumerant igen för att verifiera att den har slutförts. Om det är första gången du kör distributionsagenten ser du att ögonblicksbilden har masskopierats till prenumeranten: 
Hitta fel med Merge-Agent
Det kan ta lång tid att replikera ändringar i sammanslagningsagenten. Använd spårningsflagga 101 tillsammans med loggning av sammanslagningsagenten för att avgöra vilket steg i synkroniseringsprocessen för sammanslagningsreplikering som tar mest tid. För att göra detta använder du följande parametrar för sammanslagningsagenten och sedan starta om agenten:
-T 101
-output
-outputverboselevel
Anmärkning
Om du måste skriva statistik till <distribution-server>..msmerge_history tabellen använder du spårningsflagga 102.
Ett exempel på utdata från sammanslagningsagenten när synkroniseringen av sammanslagningsreplikering har slutförts är följande:
**************************************************************
CONNECTION TIMES --> time took to establish the connection to the servers. Publisher (all connections) 156 msec   Subscriber (all connections) 32 msec Distributor 93 msec
**************************************************************
UPLOAD COUNTERS  --> upload phase (changes from the Sub to the Pub) stats MakeGeneration Time = 343 msec. InsertGenHistory Time = 31 msec. UpdateGenHistory Time = 0 msec. ProxiedMetadata Time = 0 msec.
**************************************************************
DOWNLOAD COUNTERS  --> download phase (changes from the Pub to the Sub) stats MakeGeneration Time = 219 msec. InsertGenHistory Time = 0 msec. UpdateGenHistory Time = 0 msec.
**************************************************************
RETENTION-BASED CLEANUP STATISTICS --> sp_mergemetadataretentioncleanup proc stats Publisher: Cleanup Time 281 msec MSmerge_genhistory rows cleaned up 0 MSmerge_contents rows cleaned up 0 MSmerge_tombstone rows cleaned up 0 Subscriber: Cleanup Time 187 msec MSmerge_genhistory rows cleaned up 0 MSmerge_contents rows cleaned up 0 MSmerge_rowtrack rows cleaned up 0 MSmerge_tombstone rows cleaned up 0
**************************************************************
RETRY STATISTICS Retry Time (Upload) 0 msec. Retry Time (Download) 0 msec. Total changes retried 0 Number of Iterations through rows needing retry 0 Total number of changes that failed despite retry 0
**************************************************************
PROXY METADATA QUEUE COUNTERS Queue Full: Number of Waits: 0, Total Wait Time: 0 msec
**************************************************************
Distributor-side History Logging Time = 219 msec. Number of Distributor-side History Messages Logged = 11 Subscriber-side History Logging Time = 295 msec. Number of Subscriber-side History Messages Logged = 11
**************************************************************
2013-05-28 17:24:11.820 OLE DB Subscriber '<SQL Server name>\sql2008r2': DBCC SQLPERF (NETSTATS)  2013-05-28 17:24:11.822 OLE DB Publisher '<SQL Server name>\SQL2008R2':  DBCC SQLPERF (NETSTATS)  2013-05-28 17:24:11.824 OLE DB Distributor '<SQL Server name>\SQL2008R2':  DBCC SQLPERF (NETSTATS)  NETWORK STATISTICS Server  Reads  Writes  Bytes Read Bytes Written Publisher 74  74  19112  37526 Subscriber 73  73  19032  36931 Distributor 75  75  19192  38121
**************************************************************
NETWORK STATUS Network Connection: The computer has one or more LAN cards that are active. Network link speed: Destination Incoming  Outgoing Publisher Unreachable  Unreachable Subscriber Unreachable  Unreachable Distributor Unreachable  Unreachable
**************************************************************
Aktivera utförlig loggning på alla agenter
Du kan använda utförlig loggning för att se mer detaljerad information om fel som inträffar med alla agenter i replikeringstopologin. Stegen är desamma för varje agent. Kontrollera bara att du väljer rätt agent i Jobbaktivitetsövervakaren.
Anmärkning
Agenterna kan finnas hos prenumeranten eller utgivaren, beroende på om det är en pull- eller push-prenumeration. Om agenten inte är tillgänglig på den server som du undersöker kontrollerar du den andra servern.
- Bestäm var du vill att den utförliga loggningen ska sparas och se till att mappen finns. I det här exemplet används c:\temp. 
- Expandera SQL Server Agent-noden i Object Explorer och öppna Jobbaktivitetsövervakaren.   
- Sortera efter kategori och identifiera agenten av intresse. I det här exemplet används Log Reader Agent. Högerklicka på den agent som är av intresse >Egenskaper. 
- Välj sidan Steg och markera sedan steget Kör agent . Välj Redigera.   
- I rutan Kommando startar du en ny rad, anger följande text och väljer OK: - -Output C:\Temp\OUTPUTFILE.txt -Outputverboselevel 3- Du kan ändra plats- och verbositetsnivån enligt dina önskemål.   - När du lägger till den utförliga utdataparametern kan följande problem orsaka att agenten misslyckas eller att utfilfilen saknas: - Det finns ett formateringsproblem där bindestrecket blev ett bindestreck. 
- Platsen finns inte på disken, eller så saknar kontot som kör agenten behörighet att skriva till den angivna platsen. 
- Det saknas ett utrymme mellan den sista parametern och parametern - -Output.
- Olika agenter stöder olika nivåer av verbositet. Om du aktiverar utförlig loggning men agenten inte startar kan du försöka minska den angivna utförlighetsnivån med 1. 
 
- Starta om loggläsaragenten genom att högerklicka på agenten >Stoppa jobb vid steg. Uppdatera genom att välja ikonen Uppdatera i verktygsfältet. Högerklicka på agenten >Starta jobb vid steg. 
- Granska utdata på disken. 
- Om du vill inaktivera utförlig loggning följer du samma föregående steg för att ta bort hela - -Outputraden som du lade till tidigare.
Relaterat innehåll
               Få hjälp
               Få hjälp
- Idéer för SQL: Har du förslag på hur du kan förbättra SQL Server?
- Microsoft Q &A (SQL Server)
- DBA Stack Exchange (tagg sql-server): Ställ frågor till SQL Server
- Stack Overflow (tagg sql-server): Svar på frågor om SQL-utveckling
- Licensvillkor och information för Microsoft SQL Server
- Supportalternativ för företagsanvändare
- Ytterligare hjälp och feedback om SQL Server
               Bidra till SQL-dokumentation
               Bidra till SQL-dokumentation
Visste du att du kan redigera SQL-innehåll själv? Om du gör det hjälper du inte bara till att förbättra vår dokumentation, utan du får även kredit som deltagare på sidan.
Mer information finns i Redigera Microsoft Learn-dokumentation.
 
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
              