Felsöka säkerhetskopierings- och återställningsåtgärder för SQL Server
Den här artikeln innehåller lösningar på vanliga problem som kan uppstå under säkerhetskopierings- och återställningsåtgärder för Microsoft SQL Server och innehåller referenser till ytterligare information om dessa åtgärder.
Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 224071
Säkerhetskopierings- och återställningsåtgärder tar lång tid
Säkerhetskopierings- och återställningsåtgärder är I/O-intensiva. Dataflödet vid säkerhetskopiering/återställning beror på hur väl det underliggande I/O-undersystemet är optimerat för att hantera I/O-volymen. Om du misstänker att säkerhetskopieringsåtgärderna antingen stoppas eller tar för lång tid att slutföra kan du använda en eller flera av följande metoder för att beräkna tiden för slutförande eller för att spåra förloppet för en säkerhetskopierings- eller återställningsåtgärd:
SQL Server-felloggen innehåller information om tidigare säkerhetskopierings- och återställningsåtgärder. Du kan använda den här informationen för att uppskatta den tid som krävs för att säkerhetskopiera och återställa databasen i dess aktuella tillstånd. Följande är ett exempel på utdata från felloggen:
RESTORE DATABASE successfully processed 315 pages in 0.372 seconds (6.604 MB/sec)
I SQL Server 2016 och senare versioner kan du använda XEvent backup_restore_progress_trace för att spåra förloppet för säkerhetskopierings- och återställningsåtgärder.
Du kan använda
percent_complete
kolumnen i sys.dm_exec_requests för att spåra förloppet för säkerhetskopiering och återställning under flygning.Du kan mäta information om säkerhetskopiering och återställning av dataflöde med hjälp av räknare för
Device throughput Bytes/sec
prestandaövervakare ochBackup/Restore throughput/sec
prestandaövervakare. Mer information finns i SQL Server, Säkerhetskopiera enhetsobjekt.Använd skriptet estimate_backup_restore för att få en uppskattning av säkerhetskopieringstiderna.
Se Hur det fungerar: Vad gör återställning/säkerhetskopiering?. Det här blogginlägget ger insikter om den aktuella fasen av säkerhetskopierings- eller återställningsåtgärder.
Kontrollera det här
Kontrollera om du har några kända problem som visas i följande tabell. Fundera på om du bör implementera ändringarna eller tillämpa de korrigeringar och metodtips som beskrivs i motsvarande artiklar.
Knowledge Base- eller Books Online-länk Förklaring och rekommenderade åtgärder Optimera prestanda för säkerhetskopiering och återställning i SQL Server I avsnittet Böcker online beskrivs olika metodtips som du kan använda för att förbättra prestanda för säkerhetskopierings-/återställningsåtgärder. Du kan till exempel tilldela den SE_MANAGE_VOLUME_NAME
särskilda behörigheten till det Windows-konto som kör SQL Server för att aktivera omedelbar initiering av datafiler. Detta kan ge betydande prestandavinster.2920151 Rekommenderade snabbkorrigeringar och uppdateringar för Windows Server 2012 R2-baserade redundanskluster
2822241 windows 8 och windows server 2012 samlad uppdatering: april 2013Aktuella systemuppslagningar kan innehålla korrigeringar för kända problem på systemnivå som kan försämra prestandan för program som SQL Server. Om du installerar de här uppdateringarna kan du förhindra sådana problem. 2878182 FIX: Processer för användarläge i ett program svarar inte på servrar som kör Windows Server 2012 Säkerhetskopieringsåtgärder är I/O-intensiva och kan påverkas av den här buggen. Använd den här korrigeringen för att förhindra dessa problem. Konfigurera antivirusprogram så att det fungerar med SQL Server Antivirusprogram kan innehålla lås på .bak filer. Detta kan påverka prestandan för säkerhetskopierings- och återställningsåtgärder. Följ riktlinjerna i den här artikeln om du vill undanta säkerhetskopieringsfiler från virusgenomsökningar. 2820470 Fördröjt felmeddelande när du försöker komma åt en delad mapp som inte längre finns i Windows Diskuterar ett problem som uppstår när du försöker komma åt en delad mapp som inte längre finns i Windows 2012 och senare versioner. 967351 En kraftigt fragmenterad fil i en NTFS-volym kanske inte växer längre än en viss storlek Diskuterar ett problem som uppstår när ett NTFS-filsystem är kraftigt fragmenterat. 304101 Säkerhetskopieringsprogrammet misslyckas när du säkerhetskopierar en stor systemvolym 2455009 FIX: Långsamma prestanda när du återställer en databas om det finns många VLF:er i transaktionsloggen i SQL Server 2005, i SQL Server 2008 eller i SQL Server 2008 R2 Förekomsten av många virtuella loggfiler kan påverka den tid som krävs för att återställa en databas. Detta gäller särskilt under återställningsfasen för återställningsåtgärden. Information om andra möjliga problem som kan orsakas av förekomsten av många VLF:er finns i Databasåtgärder tar lång tid att slutföra, eller så utlöser de fel när transaktionsloggen har flera virtuella loggfiler. En säkerhetskopierings- eller återställningsåtgärd till en nätverksplats är långsam Isolera problemet till nätverket genom att försöka kopiera en fil med liknande storlek till nätverksplatsen från servern som kör SQL Server. Kontrollera prestandan. Sök efter felmeddelanden i SQL Server-felloggen och Windows-händelseloggen för att få fler tips om orsaken till problemet.
Om du använder programvara från tredje part eller planer för databasunderhåll för att göra samtidiga säkerhetskopieringar bör du överväga om du bör ändra schemana för att minimera konkurrensen på den enhet som säkerhetskopiorna skrivs till.
Kontakta Windows-administratören för att söka efter uppdateringar av inbyggd programvara för maskinvaran.
Problem som påverkar databasåterställning mellan olika SQL Server-versioner
En SQL Server-säkerhetskopiering kan inte återställas till en tidigare version av SQL Server än den version där säkerhetskopieringen skapades. Du kan till exempel inte återställa en säkerhetskopia som tas på en SQL Server 2019-instans till en SQL Server 2017-instans. Annars visas följande felmeddelande:
Fel 3169: Databasen säkerhetskopierades på en server som kör version %ls. Den versionen är inte kompatibel med den här servern, som kör versionen %ls. Antingen återställer du databasen på en server som stöder säkerhetskopieringen eller använder en säkerhetskopia som är kompatibel med den här servern.
Använd följande metod för att kopiera en databas som finns på en senare version av SQL Server till en tidigare version av SQL Server.
Kommentar
Följande procedur förutsätter att du har två SQL Server-instanser med namnet SQL_A (högre version) och SQL_B (lägre version).
- Ladda ner och installera den senaste versionen av SQL Server Management Studio (SSMS) på både SQL_A och SQL_B.
- Följ dessa steg på SQL_A:
- Högerklicka på <DinaDatabasuppgifter>>Generera skript och välj alternativet för att skripta hela databasen och alla databasobjekt.
- På skärmen Ange skriptalternativ väljer du Avancerat och väljer sedan versionen av SQL_B under Allmänt>skript för SQL Server-version. Välj också det alternativ som passar bäst för att spara de genererade skripten. Fortsätt sedan guiden.
- Använd verktyget masskopieringsprogram (bcp) för att kopiera data från olika tabeller.
- Följ dessa steg på SQL_B:
- Använd skripten som genererades på SQL_A-servern för att skapa databasschema.
- Inaktivera eventuella begränsningar för främmande nycklar och utlösare på varje tabell. Om tabellen har några identitetskolumner aktiverar du identitetsinfogning.
- Använd bcp för att importera data som du exporterade i föregående steg till motsvarande tabeller.
- När dataimporten är klar aktiverar du begränsningar och utlösare för sekundärnyckeln och inaktiverar identitetsinfogning för var och en av de tabeller som påverkas i steg c.
Den här proceduren fungerar vanligtvis bra för små till medelstora databaser. För större databaser kan problem med slut på minne uppstå i SSMS och andra verktyg. Du bör överväga att använda SQL Server Integration Services (SSIS), replikering eller andra alternativ för att skapa en kopia av en databas från en senare version till en tidigare version av SQL Server.
Mer information om hur du genererar skript för databasen finns i Skripta en databas med alternativet Generera skript.
Problem med säkerhetskopieringsjobb i AlwaysOn-miljöer
Observera följande om du stöter på problem som påverkar säkerhetskopieringsjobb eller underhållsplaner i AlwaysOn-miljöer:
- Som standard är inställningen för automatisk säkerhetskopiering inställd på Prioritera sekundär. Detta anger att säkerhetskopieringar ska ske på en sekundär replik – förutom om den primära repliken är den enda repliken online. Du kan inte göra differentiella säkerhetskopior av databasen med hjälp av den här inställningen. Om du vill ändra den här inställningen använder du SSMS på din aktuella primära replik och går till sidan Inställningar för säkerhetskopiering under Egenskaper för din tillgänglighetsgrupp.
- Om du använder en underhållsplan eller schemalagda jobb för att generera säkerhetskopior av dina databaser måste du skapa jobben för varje tillgänglighetsdatabas på varje serverinstans som är värd för en tillgänglighetsreplik för tillgänglighetsgruppen.
Mer information om säkerhetskopior i en AlwaysOn-miljö finns i följande avsnitt:
- Konfigurera säkerhetskopiering på sekundära repliker för en AlwaysOn-tillgänglighetsgrupp
- Avlasta säkerhetskopieringar som stöds till sekundära repliker av en tillgänglighetsgrupp
Medierelaterade fel när du återställer en databas från en säkerhetskopia
Om du får felmeddelanden som anger ett filproblem är detta symptomatiskt för en skadad säkerhetskopia. Följande är några exempel på fel som du kan få om en säkerhetskopieringsuppsättning är skadad:
-
3241: Mediefamiljen på enheten %ls är felaktigt utformad. SQL Server kan inte bearbeta den här mediefamiljen.
-
3242: Filen på enheten %ls är inte en giltig säkerhetskopieringsuppsättning för Microsoft-bandformat.
-
3243: Mediefamiljen på enheten %ls skapades med Microsoft Tape Format-version %d.%d. SQL Server har stöd för version %d.%d.
Kommentar
Du kan använda instruktionen Återställ huvud för att kontrollera dina säkerhetskopior.
Dessa problem kan uppstå på grund av problem som påverkar den underliggande maskinvaran (hårddiskar, nätverkslagring och så vidare) eller som är relaterade till ett virus eller skadlig kod. Granska händelseloggar och maskinvaruloggar för Windows System för rapporterade fel och vidta lämpliga åtgärder (till exempel uppgradera inbyggd programvara eller åtgärda nätverksproblem).
Om du vill förhindra dessa fel aktiverar du alternativet CHECKSUM för säkerhetskopiering när du kör en säkerhetskopia för att undvika att säkerhetskopiera en skadad databas. Mer information finns i Möjliga mediefel under säkerhetskopiering och återställning (SQL Server).
Du kan också aktivera spårningsflagga 3023 för att aktivera en kontrollsumma när du kör säkerhetskopior med hjälp av säkerhetskopieringsverktyg. Mer information finns i Så här aktiverar du alternativet CHECKSUM om säkerhetskopieringsverktyg inte exponerar alternativet.
För att åtgärda dessa problem måste du antingen hitta en annan användbar säkerhetskopieringsfil eller skapa en ny säkerhetskopieringsuppsättning. Microsoft erbjuder inga lösningar som kan hjälpa dig att hämta data från en skadad säkerhetskopieringsuppsättning.
Kommentar
Om en säkerhetskopieringsfil återställs på en server men inte på en annan kan du prova olika sätt att kopiera filen mellan servrarna. Prova till exempel robocopy i stället för en vanlig kopieringsåtgärd.
Säkerhetskopieringar misslyckas på grund av behörighetsproblem
När du försöker köra säkerhetskopieringsåtgärder för databaser uppstår något av följande fel.
Scenario 1: När du kör en säkerhetskopia från SQL Server Management Studio misslyckas säkerhetskopieringen och returnerar följande felmeddelande:
Säkerhetskopieringen misslyckades för serverservernamnet<>. (Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError: Det går inte att öppna enhetens< enhetsnamn>. Operativsystemfel 5(Åtkomst nekas.). (Microsoft.SqlServer.Smo)Scenario 2: Schemalagda säkerhetskopieringar misslyckas och genererar ett felmeddelande som loggas i jobbhistoriken för det misslyckade jobbet, och som liknar följande:
Executed as user: <Owner of the job>. ....2 for 64-bit Copyright (C) 2019 Microsoft. All rights reserved. Started: 5:49:14 PM Progress: 2021-08-16 17:49:15.47 Source: {GUID} Executing query "DECLARE @Guid UNIQUEIDENTIFIER EXECUTE msdb..sp...".: 100% complete End Progress Error: 2021-08-16 17:49:15.74 Code: 0xC002F210 Source: Back Up Database (Full) Execute SQL Task Description: Executing the query "EXECUTE master.dbo.xp_create_subdir N'C:\backups\D..." failed with the following error: "xp_create_subdir() returned error 5, 'Access is denied.'". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Något av dessa scenarier kan inträffa om SQL Server-tjänstkontot inte har läs- och skrivbehörighet till mappen som säkerhetskopior skrivs till. Säkerhetskopieringsuttryck kan köras antingen som en del av ett jobbsteg eller manuellt från SQL Server Management Studio. I båda fallen körs de alltid i kontexten för SQL Server Service-startkontot. Om tjänstkontot inte har de behörigheter som krävs får du därför de felmeddelanden som noterades tidigare.
Mer information finns i Säkerhetskopiera enheter.
Kommentar
Du kan kontrollera de aktuella behörigheterna för SQL Service-kontot i en mapp genom att gå till fliken Säkerhet i egenskaperna för motsvarande mapp, välja knappen Avancerat och sedan använda fliken Effektiv åtkomst .
Säkerhetskopierings- eller återställningsåtgärder som använder program för säkerhetskopiering från tredje part misslyckas
SQL Server tillhandahåller ett VDI-verktyg (Virtual Backup Device Interface). Det här API:et gör det möjligt för oberoende programvaruleverantörer att integrera SQL Server i sina produkter för att ge stöd för säkerhetskopierings- och återställningsåtgärder. Dessa API:er är utformade för att ge maximal tillförlitlighet och prestanda och för att stödja alla funktioner för säkerhetskopiering och återställning av SQL Server. Detta omfattar alla funktioner för ögonblicksbilder och frekvent säkerhetskopiering.
Vanliga felsökningssteg
För versioner som är tidigare än SQL Server 2012 kontrollerar du att SQLWriter-tjänsten har startats och att startkontot är inställt på Lokalt system. Kontrollera också att NT AUTHORITY\SYSTEM-inloggningen finns i SQL Server och att den är en del av Sysadmin-serverrollen för den instans som säkerhetskopieringar körs till.
För SQL Server 2012 och senare skapas och etableras en ny inloggning med namnet [NT SERVICE\SQLWriter] som en inloggning under installationen. Kontrollera att den här inloggningen finns i SQL Server och är en del av Sysadmin-serverrollen.
Kontrollera att SqlServerWriter visas när
VSSADMIN LIST WRITERS
kommandot körs i en kommandotolk på servern som kör SQL Server. Den här skrivaren måste anges som skrivare och bör vara i ett stabilt tillstånd för att VSS-säkerhetskopieringar ska kunna slutföras.Mer information finns i loggarna från motsvarande säkerhetskopieringsprogram och deras supportwebbplatser.
Symtom eller scenario KB-artikel Säkerhetskopieringar av skiftlägeskänsliga databaser misslyckas 2987610 FIX: Fel när du säkerhetskopierar en databas som har skiftlägeskänslig sortering med hjälp av VSS i SQL Server 2012 SP2 Säkerhetskopieringar från tredje part som görs med VSS-skrivaren kan misslyckas och returnera 8229-fel. 2987610 FIX: Fel när du säkerhetskopierar en databas som har skiftlägeskänslig sortering med hjälp av VSS i SQL Server 2012 SP2 Förstå hur VDI-säkerhetskopiering fungerar Så här fungerar det: SÄKERHETSKOPIERingsresurser för SQL Server – VDI (VSS) Azure Site Recovery-agenten rapporterar fel ASR-agenten eller annan VSS-säkerhetskopiering som inte är komponent misslyckas för en server som är värd för SQL Server 2008 R2
Fler resurser
Hur fungerar det: Hur många databaser kan säkerhetskopieras samtidigt?
Övriga problem
Vanliga frågor och svar om säkerhetskopiering och återställning av SQL Server
Hur kan jag kontrollera statusen för en säkerhetskopieringsåtgärd?
Använd skriptet estimate_backup_restore för att få en uppskattning av säkerhetskopieringstiderna.
Vad ska jag göra om SQL Server redundansväxlar mitt i säkerhetskopieringen?
Starta om återställnings- eller säkerhetskopieringsåtgärden per Starta om en avbruten återställningsåtgärd (Transact-SQL).
Kan jag återställa databassäkerhetskopior från äldre programversioner i nyare versioner och vice versa?
SQL Server-säkerhetskopiering kan inte återställas med hjälp av en version av SQL Server som är senare än den version som skapade säkerhetskopian. Mer information finns i Kompatibilitetssupport.
Hur gör jag för att verifiera mina säkerhetskopior av SQL Server-databasen?
Se de procedurer som dokumenteras i RESTORE-instruktioner – VERIFYONLY (Transact-SQL).
Hur hämtar jag säkerhetskopieringshistoriken för databaser i SQL Server?
Se Hämta säkerhetskopieringshistoriken för databaser i SQL Server.
Kan jag återställa 32-bitars säkerhetskopior på 64-bitarsservrar och vice versa?
Ja. SQL Server-lagringsformatet på disk är detsamma i 64-bitars- och 32-bitarsmiljöerna. Därför fungerar säkerhetskopierings- och återställningsåtgärder i 64-bitars- och 32-bitarsmiljöer.
Allmänna tips om felsökning
- Se till att etablera läs- och skrivbehörigheter till SQL Server Service-kontot i mappen som säkerhetskopiorna skrivs till. Mer information finns i Behörigheter för säkerhetskopiering.
- Kontrollera att mappen som säkerhetskopiorna skrivs för att ha tillräckligt med utrymme för dina databassäkerhetskopior. Du kan använda den
sp_spaceused
lagrade proceduren för att få en ungefärlig uppskattning av säkerhetskopieringsstorleken för en specifik databas. - Använd alltid den senaste versionen av SSMS för att se till att du inte stöter på några kända problem som rör konfiguration av jobb och underhållsplaner.
- Gör en testkörning av dina jobb för att se till att säkerhetskopiorna har skapats. Lägg alltid till logik för att verifiera dina säkerhetskopior.
- Om du planerar att flytta systemdatabaser från en server till en annan läser du Flytta systemdatabaser.
- Om du märker tillfälliga säkerhetskopieringsfel kontrollerar du om du har ett problem som redan har åtgärdats i den senaste uppdateringen för SQL Server-versionen. Mer information finns i SQL Server-versioner och uppdateringar.
- Om du vill schemalägga och automatisera säkerhetskopiering för SQL Express-versioner kan du läsa Schemalägga och automatisera säkerhetskopiering av SQL Server-databaser i SQL Server Express.
Referensavsnitt för säkerhetskopiering och återställning av SQL Server
Mer information om säkerhetskopierings- och återställningsåtgärder finns i följande avsnitt i Books Online:
"Säkerhetskopiering och återställning av SQL Server-databaser": Det här avsnittet beskriver begreppen för säkerhetskopierings- och återställningsåtgärder för SQL Server-databaser, innehåller länkar till ytterligare ämnen och innehåller detaljerade procedurer för att köra olika säkerhetskopieringar eller återställningsåtgärder (till exempel att verifiera säkerhetskopior och säkerhetskopiera med hjälp av T-SQL eller SSMS). Det här är det överordnade ämnet om det här ämnet i SQL Server-dokumentationen.
I följande tabell visas ytterligare avsnitt som du kanske vill granska för specifika uppgifter som rör säkerhetskopierings- och återställningsåtgärder.
Referens Beskrivning BACKUP (Transact-SQL) Ger svar på grundläggande frågor som rör säkerhetskopior. Innehåller exempel på olika typer av säkerhetskopierings- och återställningsåtgärder. Säkerhetskopieringsenheter (SQL Server) Ger en bra referens för att förstå olika säkerhetskopieringsenheter, säkerhetskopiera till en nätverksresurs, Azure Blob Storage och relaterade uppgifter. Återställningsmodeller (SQL Server) Beskriver i detalj de olika återställningsmodellerna: Enkel, Fullständig och Massloggad. Innehåller information om hur återställningsmodellen påverkar säkerhetskopieringar. Säkerhetskopiering och återställning: systemdatabaser (SQL Server) Omfattar strategier och beskriver vad du måste känna till när du arbetar med säkerhetskopiering och återställning av systemdatabaser. Översikt över återskapande och återställning (SQL Server) Beskriver hur återställningsmodellerna påverkar återställningsåtgärder. Du bör granska detta om du har frågor om hur återställningsmodellen för en databas kan påverka återställningsprocessen. Hantera metadata när du gör en databas tillgänglig på en annan server Olika överväganden som du bör känna till när en databas flyttas eller om du stöter på problem som påverkar inloggningar, kryptering, replikering, behörigheter och så vidare. Arbeta med säkerhetskopiering av transaktionsloggar Beskriver begrepp om hur du säkerhetskopierar och återställer (tillämpar) transaktionsloggar i de fullständiga och massloggade återställningsmodellerna. Förklarar hur du utför rutinmässiga säkerhetskopieringar av transaktionsloggar (loggsäkerhetskopior) för att återställa data. SQL Server-hanterad säkerhetskopiering till Microsoft Azure Introducerar hanterad säkerhetskopiering och associerade procedurer.