Felsöka SQL Server säkerhetskopierings- och återställningsåtgärder

Den här artikeln innehåller lösningar på vanliga problem som kan uppstå under Microsoft SQL Server säkerhetskopierings- och återställningsåtgärder 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 för 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:

  • Felloggen SQL Server 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 Device throughput Bytes/sec av prestandaövervakningsräknarna och Backup/Restore throughput/sec . Mer information finns i SQL Server, Säkerhetskopiering av 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 inblick i den aktuella fasen av säkerhetskopierings- eller återställningsåtgärder.

Saker att kontrollera

  1. Kontrollera om du har några kända problem som visas i följande tabell. Överväg om du ska 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

    samlad 2822241 Windows 8 och Windows Server 2012 uppdatering: april 2013
    Aktuella systemuppslagningar kan innehålla korrigeringar för kända problem på systemnivå som kan försämra prestandan för program som SQL Server. Genom att installera de här uppdateringarna kan du förhindra sådana problem.
    2878182 FIX: Processer i 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 felet. 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 anvisningarna i den här artikeln för att undanta säkerhetskopierade filer 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 över 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 VVLF: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 VVLF:er finns i Databasåtgärder tar lång tid att slutföra, eller så utlöser de fel när transaktionsloggen har många 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 den server som kör SQL Server. Kontrollera prestandan.
  2. Sök efter felmeddelanden i SQL Server-felloggen och Windows-händelseloggen för att få fler tips om orsaken till problemet.

  3. 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 scheman för att minimera konkurrensen på den enhet som säkerhetskopiorna skrivs till.

  4. Kontakta Windows-administratören för att söka efter uppdateringar av den inbyggda programvaran 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äkerhetskopian skapades. Du kan till exempel inte återställa en säkerhetskopia som har tagits 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 version %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.

Obs!

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).

  1. Ladda ned och installera den senaste versionen av SQL Server Management Studio (SSMS) på både SQL_A och SQL_B.
  2. Följ dessa steg på SQL_A:
    1. Högerklicka på <DinaDatabasuppgifter> Generera >skript och välj alternativet för att skripta hela databasen och alla databasobjekt.
    2. På skärmen Ange skriptalternativ väljer du Avancerat och 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.
    3. Använd verktyget masskopieringsprogram (bcp) för att kopiera data från olika tabeller.
  3. Följ dessa steg på SQL_B:
    1. Använd skripten som genererades på SQL_A-servern för att skapa databasschema.
    2. Inaktivera eventuella begränsningar och utlösare för sekundärnycklar i varje tabell. Om tabellen har några identitetskolumner aktiverar du identitetsinfogning.
    3. Använd bcp för att importera data som du exporterade i föregående steg till motsvarande tabeller.
    4. 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 din databas finns i Skripta en databas med hjälp av 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 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äkerhetskopieringar i en AlwaysOn-miljö finns i följande avsnitt:

Om du får felmeddelanden som indikerar 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äkerhetskopia av Microsoft-bandformat.

  • 3243: Mediefamiljen på enheten %ls skapades med microsofts bandformatversion %d.%d. SQL Server stöder version %d.%d.

Obs!

Du kan använda instruktionen Återställningshuvud 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 efter 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 How to enable the CHECKSUM option if backup utilities don't expose the option.

För att åtgärda dessa problem måste du antingen hitta en annan användbar säkerhetskopia eller skapa en ny säkerhetskopia. Microsoft erbjuder inga lösningar som kan hjälpa dig att hämta data från en skadad säkerhetskopia.

Obs!

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 startkontot för SQL Server-tjänsten. Om tjänstkontot inte har de behörigheter som krävs får du därför felmeddelandena som noterades tidigare.

Mer information finns i Säkerhetskopieringsenheter.

Obs!

Du kan kontrollera de aktuella behörigheterna för SQL-tjänstkontot 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 Gällande å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 SQL Server säkerhetskopiering och återställning. Detta omfattar alla funktioner för ögonblicksbilder och frekvent säkerhetskopiering.

Vanliga felsökningssteg

Fler resurser

Hur fungerar det: Hur många databaser kan säkerhetskopieras samtidigt?

Diverse problem

Symptom/scenario Åtgärdsåtgärder eller ytterligare information
Säkerhetskopieringar kan misslyckas om ändringsspårning är aktiverat på databaserna och returnerar fel som liknar följande:

"Fel: 3999, allvarlighetsgrad: 17, tillstånd: 1.

<Time Stamp> spid spid><Det gick inte att tömma incheckningstabellen till disken i dbid 8 på grund av fel 2601. Mer information finns i felloggen."


Se följande Microsoft Knowledge Base-artiklar:
Problem med att återställa säkerhetskopior av krypterade databaser Flytta en TDE-skyddad databas till en annan SQL Server
Det går inte att återställa en CRM-säkerhetskopia från Enterprise-utgåvan på en Standard-utgåva 2567984 felet "Det går inte att starta databasen i den här versionen av SQL Server" när du återställer en Microsoft Dynamics CRM databas

Vanliga frågor och svar om SQL Server säkerhetskopierings- och återställningsåtgärder

Hur kontrollerar jag status 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 omstart av en avbruten återställningsåtgärd (Transact-SQL).

Kan jag återställa databassäkerhetskopior från äldre programversioner på 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 SQL Server databassäkerhetskopior?

Se procedurerna som dokumenteras i RESTORE-instruktioner – VERIFYONLY (Transact-SQL).

Hur hämtar jag säkerhetskopieringshistoriken för databaser i SQL Server?

Se Så här hämtar du säkerhetskopieringshistoriken för databaser i SQL Server.

Kan jag återställa 32-bitars säkerhetskopior på 64-bitarsservrar och vice versa?

Ja. Det 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 felsökningstips

  • 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 där säkerhetskopiorna skrivs har tillräckligt med utrymme för dina databassäkerhetskopieringar. 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 ser tillfälliga säkerhetskopieringsfel kontrollerar du om du har ett problem som redan har åtgärdats i den senaste uppdateringen för din SQL Server version. Mer information finns i SQL Server versioner och uppdateringar.
  • Information om hur du schemalägger och automatiserar säkerhetskopieringar för SQL Express-utgåvor finns i Schemalägga och automatisera säkerhetskopieringar av SQL Server databaser i SQL Server Express.

Referensavsnitt för SQL Server säkerhetskopierings- och återställningsåtgärder

  • 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ällningsuppgifter (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 relaterade till säkerhetskopierings- och återställningsåtgärder.

    Referens Beskrivning
    BACKUP (Transact-SQL) Ger svar på grundläggande frågor som rör säkerhetskopieringar. Innehåller exempel på olika typer av säkerhetskopierings- och återställningsåtgärder.
    Säkerhetskopieringsenheter (SQL Server) Innehåller 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 & å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 återställning 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äkerhetskopior 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.