Dela via


Databasögonblicksbilder (SQL Server)

gäller för:SQL Server

En ögonblicksbild av databasen är en skrivskyddad, statisk vy av en SQL Server-databas (källdatabasen). Den är transaktionsmässigt konsekvent med källdatabasen när ögonblicksbilden skapas och finns alltid på samma serverinstans som källdatabasen. Även om databasögonblicksbilder ger en skrivskyddad vy av data i samma tillstånd som när ögonblicksbilden skapades, växer storleken på ögonblicksbildfilen när ändringar görs i källdatabasen.

Även om databasögonblicksbilder kan vara bra vid större schemauppgraderingar och göra det möjligt att återgå till ett tidigare tillstånd, är det viktigt att förstå att ögonblicksbilder inte ersätter behovet av regelbundna säkerhetskopior. Du kan inte säkerhetskopiera eller återställa databasögonblicksbilder, vilket innebär att de bör användas med en robust säkerhetskopieringsstrategi för att säkerställa dataskydd och återställning om data går förlorade eller skadas.

Databasögonblicksbilder skapas med CREATE DATABASE T-SQL-syntax med hjälp av AS SNAPSHOT OF syntax.

Flera ögonblicksbilder kan finnas i en viss källdatabas. Varje ögonblicksbild av databasen bevaras tills databasägaren uttryckligen släpper den.

Notera

Databasögonblicksbilder är inte relaterade till säkerhetskopieringar av ögonblicksbilder, Transact-SQL säkerhetskopior av ögonblicksbilder, ögonblicksbildisolering av transaktioner eller replikering av ögonblicksbilder.

Funktionsöversikt

Databasögonblicksbilder fungerar på datasidans nivå. Innan en sida i källdatabasen ändras för första gången kopieras den ursprungliga sidan från källdatabasen till ögonblicksbilden. Ögonblicksbilden lagrar den ursprungliga sidan och bevarar dataposterna som de fanns när ögonblicksbilden skapades. Samma process upprepas för varje sida som ändras för första gången. För användaren verkar en ögonblicksbild av databasen aldrig ändras eftersom läsåtgärder på en databasögonblicksbild alltid kommer åt de ursprungliga datasidorna, oavsett var de finns.

Ögonblicksbilden lagrar de kopierade originalsidorna med hjälp av en eller flera glesa filer. Inledningsvis är en gles fil en tom fil som inte innehåller några användardata och som ännu inte har allokerats diskutrymme för användardata. Filstorleken växer när fler sidor uppdateras i källdatabasen. Följande bild illustrerar effekterna av två kontrasterande uppdateringsmönster på storleken på en ögonblicksbild. Uppdateringsmönster A återspeglar en miljö där endast 30 procent av de ursprungliga sidorna uppdateras under ögonblicksbildens livslängd. Uppdateringsmönstret B återspeglar en miljö där 80 procent av de ursprungliga sidorna uppdateras under ögonblicksbildens livslängd.

diagram som visar alternativa uppdateringsmönster och storlek på ögonblicksbilder.

Fördelar

  • Ögonblicksbilder kan användas i rapporteringssyfte.

    • Klienter kan köra frågor mot en ögonblicksbild av databasen, vilket hjälper till att skriva rapporter baserat på data när ögonblicksbilden skapas.
  • Underhåll av historiska data för rapportgenerering.

    • En ögonblicksbild kan utöka användaråtkomsten till data från en viss tidpunkt. Du kan till exempel skapa en ögonblicksbild av databasen för senare rapportering i slutet av en viss period (till exempel ett finansiellt kvartal). Du kan sedan köra periodslutrapporter på ögonblicksbilden. Om diskutrymme tillåter kan du även underhålla ögonblicksbilder i slutet av perioden på obestämd tid, vilket gör att frågor mot resultaten från dessa perioder till exempel kan undersöka organisationens prestanda.
  • Använd en speglingsdatabas som du underhåller i tillgänglighetssyfte för att avlasta rapporteringen.

    • Om du använder databasögonblicksbilder med databasspegling kan du göra data på speglingsservern tillgängliga för rapportering. Dessutom kan du genom att köra frågor i speglingsdatabasen frigöra resurser för huvuddatorn. Mer information finns i Database Mirroring and Database Snapshots (SQL Server).
  • Skydda data mot administrativa fel.

  • Om ett användarfel uppstår i en källdatabas kan du återställa den till dess tillstånd när en ögonblicksbild av databasen skapas. Dataförlusten är begränsad till uppdateringar av databasen sedan ögonblicksbilden skapades.

    • Innan du till exempel gör större uppdateringar, till exempel en massuppdatering eller en schemaändring, skapar du en databasögonblicksbild på databasen för att skydda data. Om du gör ett misstag kan du använda ögonblicksbilden för att återställa genom att återställa databasen till ögonblicksbilden. Det går snabbare att återställa än att återställa från en säkerhetskopia. Du kan dock inte rulla framåt efteråt.

      Viktig

      Återställning fungerar inte i en offlinedatabas eller i en skadad databas. Därför krävs regelbundna säkerhetskopieringar och testning av återställningsplanen för att skydda en databas.

      Not

      Databasögonblicksbilder är beroende av källdatabasen. Att använda ögonblicksbilder för att återställa en databas är därför inte en ersättning för din strategi för säkerhetskopiering och återställning. Att utföra alla schemalagda säkerhetskopior är fortfarande viktigt. Om du måste återställa källdatabasen till den punkt där du skapade en ögonblicksbild av databasen implementerar du en säkerhetskopieringsprincip som gör att du kan göra det.

  • Skydda data mot användarfel.

  • Genom att skapa databasögonblicksbilder regelbundet kan du minimera effekten av ett större användarfel, till exempel en borttagen tabell. För en hög skyddsnivå kan du skapa en serie databasögonblicksbilder som sträcker sig över tillräckligt med tid för att identifiera och svara på de flesta användarfel. Beroende på diskresurser kan du till exempel behålla 6 till 12 rullande ögonblicksbilder som sträcker sig över ett 24-timmarsintervall. Varje gång en ny ögonblicksbild skapas kan den tidigaste ögonblicksbilden sedan tas bort.

    • Om du vill återställa från ett användarfel kan du återställa databasen till ögonblicksbilden omedelbart före felet. Det går potentiellt mycket snabbare att återställa till en tidigare version än att återskapa från en säkerhetskopia. Du kan dock inte avancera framåt efteråt.

    • Du kan också manuellt rekonstruera en borttagen tabell eller andra förlorade data från informationen i en ögonblicksbild. Du kan till exempel masskopiera data från ögonblicksbilden till databasen och manuellt sammanfoga data tillbaka till databasen.

      Not

      Dina orsaker till att använda ögonblicksbilder av databaser avgör hur många samtidiga ögonblicksbilder du behöver i en databas, hur ofta du skapar en ny ögonblicksbild och hur länge du behåller den.

  • Hantera en testdatabas.

    • I en testmiljö kan det vara användbart för databasen att innehålla identiska data i början av varje testomgång när du kör ett testprotokoll upprepade gånger. Innan du kör den första omgången kan en programutvecklare eller testare skapa en ögonblicksbild av testdatabasen. Efter varje testkörning kan databasen snabbt återgå till sitt tidigare tillstånd genom att återställa databasögonblicksbilden.

Termer och definitioner

Databasögonblicksbilder i SQL Server omfattar flera viktiga termer och definitioner. En databasögonblicksbild är en skrivskyddad, statisk vy av en databas (kallas källdatabas) vid en viss tidpunkt. Den källdatabasen är den ursprungliga databas som ögonblicksbilden baseras på, och den måste vara online och tillgänglig för att ögonblicksbilden ska kunna användas. Sparse-filer lagra de ursprungliga sidorna i källdatabasen som har ändrats sedan ögonblicksbilden skapades. Dessa filer är initialt tomma och växer när ändringar sker i källdatabasen. Att förstå dessa termer är viktigt för att effektivt hantera och använda databasögonblicksbilder i SQL Server.

Databasögonblicksbild

En transaktionskonsekvent, skrivskyddad, statisk vy av en databas (källdatabasen).

Källdatabas

För en databasögonblicksbild, databasen där ögonblicksbilden skapades. Databasögonblicksbilder är beroende av källdatabasen. Ögonblicksbilderna av en databas måste finnas på samma serverinstans som databasen. Om databasen av någon anledning blir otillgänglig blir dess ögonblicksbilder dessutom otillgängliga.

Gles fil

NTFS-filsystemet tillhandahåller en fil som kräver mycket mindre diskutrymme än vad som annars skulle behövas. En gles fil används för att lagra sidor som kopierats till en databasögonblicksbild. När den först skapas tar en gles fil upp lite diskutrymme. När data skrivs till en databasögonblicksbild allokerar NTFS diskutrymme gradvis till motsvarande glesa fil.

Förutsättningar

Källdatabasen, som kan använda valfri återställningsmodell, måste uppfylla följande krav:

  • Serverinstansen måste köras på en utgåva av SQL Server som stöder databasögonblicksbilder.

  • Källdatabasen måste vara online om det inte är en speglingsdatabas i en databasspeglingssession.

  • Du kan skapa en ögonblicksbild av databasen i en tillgänglighetsgrupp på valfri primär eller sekundär databas. Replikrollen måste vara antingen PRIMÄR eller SEKUNDÄR, inte i RESOLVERAS-tillståndet.

  • Vi rekommenderar att databassynkroniseringstillståndet är SYNKRONISERAS eller SYNKRONISERAD när en ögonblicksbild av databasen skapas. Databasögonblicksbilder kan dock skapas när tillståndet INTE synkroniseras.

  • Om du vill skapa en databasögonblicksbild på en speglingsdatabas måste databasen vara i speglingstillståndet SYNKRONISERAD.

  • Källdatabasen kan inte konfigureras som en skalbar delad databas.

  • Innan SQL Server 2019 kunde källdatabasen inte innehålla en MEMORY_OPTIMIZED_DATA filgrupp. Stöd för minnesinterna databasögonblicksbilder har lagts till i SQL Server 2019.

  • Alla återställningsmodeller stöder databasögonblicksbilder.

Begränsningar i källdatabasen

Så länge det finns en ögonblicksbild av databasen finns följande begränsningar i ögonblicksbildens källdatabas:

  • Databasen kan inte tas bort, kopplas från eller återställas.

  • Säkerhetskopiering av källdatabasen fungerar vanligtvis, men den påverkas inte av databasögonblicksbilder.

  • Prestandan minskas på grund av ökad I/O på källdatabasen till följd av en copy-on-write-åtgärd till ögonblicksbilden varje gång en sida uppdateras.

  • Filer kan inte tas bort från källdatabasen eller några snapshots.

Begränsningar för databasögonblicksbilder

Databasögonblicksbilder är beroende av källdatabasen och skyddar inte mot diskfel eller skada. Även om de kan vara användbara i rapporteringssyfte eller vid schemaändringar bör de därför komplettera, inte ersätta, vanliga säkerhetskopieringsmetoder. Om du behöver återställa källdatabasen till den punkt där du skapade en databasögonblicksbild implementerar du en säkerhetskopieringsprincip som gör att du kan göra det.

Följande begränsningar gäller för databasögonblicksbilder:

  • En ögonblicksbild av databasen måste skapas och finnas kvar på samma serverinstans som källdatabasen.

  • Databasögonblick fungerar alltid på en hel databas.

  • Databasögonblicksbilder beror på källdatabasen och är inte redundant lagring. De skyddar inte mot diskfel eller andra typer av skador. Att använda ögonblicksbilder för att återställa en databas är därför inte en ersättning för din strategi för säkerhetskopiering och återställning. Att utföra alla schemalagda säkerhetskopior är fortfarande viktigt. Om du måste återställa källdatabasen till den punkt där du skapade en ögonblicksbild av databasen implementerar du en säkerhetskopieringsprincip som gör att du kan göra det.

När en sida i källdatabasen uppdateras och skickas till en ögonblicksbild, och om ögonblicksbilden får ont om diskutrymme eller påträffar något annat fel, blir den misstänkt och måste tas bort.

  • Ögonblicksbilder är skrivskyddade. Eftersom de är skrivskyddade kan de inte uppgraderas. Därför förväntas inte databasögonblicksbilder vara livskraftiga efter en uppgradering.

  • Ögonblicksbilder av databaserna model, masteroch tempdb är förbjudna.

  • Du kan inte ändra någon av specifikationerna för databasögonblicksfilerna.

  • Du kan inte släppa filer från en databasögonblicksbild.

  • Du kan inte säkerhetskopiera databasögonblicksbilder eller återställa dem.

  • Du kan inte bifoga eller koppla bort databasögonblicksbilder.

  • Du kan inte skapa databasögonblicksbilder i FAT32-filsystemet eller RAW-partitionerna. NTFS-filsystemet tillhandahåller de glesa filer som används av databasögonblicksbilder.

  • Fulltextindexering stöds inte i databasögonblicksbilder. Fulltextkataloger sprids inte från källdatabasen.

  • En ögonblicksbild av databasen ärver säkerhetsbegränsningarna för källdatabasen när ögonblicksbilden skapas. Eftersom ögonblicksbilder är skrivskyddade kan ärvda behörigheter inte ändras och behörighetsändringar som görs i källan återspeglas inte i befintliga ögonblicksbilder.

  • En ögonblicksbild återspeglar alltid tillståndet för filgrupper när ögonblicksbilden skapas: onlinefilgrupper förblir online och offlinefilgrupper förblir offline. Mer information finns i "Databasögonblicksbilder med offlinefilgrupper" senare i den här artikeln.

  • Om en källdatabas blir RECOVERY_PENDING kan dess ögonblicksbilder bli otillgängliga. Men när problemet i källdatabasen har lösts bör dess ögonblicksbilder bli tillgängliga igen.

  • Revertering stöds inte för några skrivskyddade eller NTFS-komprimerade filer i databasen. Försök att återställa en databas som innehåller någon av dessa typer av filgrupper misslyckas.

  • I en loggöverföringskonfiguration kan databasögonblicksbilder endast skapas på huvuddatabasen, inte en sekundär. Anta att du växlar roller mellan de primära och sekundära serverinstanserna. I så fall måste du släppa alla ögonblicksbilder av databasen innan du konfigurerar den primära databasen som sekundär.

  • En ögonblicksbild av databasen kan inte konfigureras som en skalbar delad databas.

Databasögonblicksbilder stöder inte FILESTREAM-filgrupper. Om FILESTREAM-filgrupper finns i en källdatabas markeras de som offline i dess databasögonblicksbilder och ögonblicksbilderna kan inte användas för att återställa databasen.

Not

En SELECT-instruktion som körs på en databasögonblicksbild får inte ange en FILESTREAM-kolumn. Annars returneras följande felmeddelande: Could not continue scan with NOLOCK due to data movement.

  • När statistik för en skrivskyddad ögonblicksbild saknas eller är inaktuell, skapar och underhåller databasmotorn tillfällig statistik i tempdb. Mer information finns i Statistik.

Diskutrymme

Databasögonblicksbilder förbrukar diskutrymme. Om en databasögonblicksbild får slut på diskutrymme markeras den som misstänkt och måste tas bort. (Källdatabasen påverkas dock inte. Åtgärderna på den fortsätter normalt.)

Ögonblicksbilder är dock mycket utrymmeseffektiva jämfört med en fullständig kopia av en databas. En ögonblicksbild kräver bara tillräckligt med lagringsutrymme för de sidor som ändras under dess livslängd. I allmänhet sparas ögonblicksbilder under en begränsad tid, så deras storlek är inte ett betydande problem.

Men ju längre du behåller en ögonblicksbild, desto mer sannolikt är det att använda tillgängligt utrymme. Den maximala storleken som en gles fil kan växa till är motsvarande källdatabasfilstorlek när ögonblicksbilden skapas. En databasögonblicksbild måste tas bort om diskutrymmet tar slut.

Not

Förutom filutrymme förbrukar en databasögonblicksbild ungefär lika många resurser som en databas.

Offlinefilgrupper

Offlinefilgrupper i källdatabasen påverkar databasögonblicksbilder när du försöker göra något av följande:

  • Skapa en ögonblicksbild.

    • När en källdatabas har en eller flera offline-filgrupper skapas ögonblicksbilderna framgångsrikt med filgrupperna offline. Sparse-filer skapas inte för offline-filgrupper.
  • Ta en filgrupp offline

    • Du kan ta en fil offline i källdatabasen. Filgruppen förblir dock online i databasögonblicksbilder om den var online när ögonblicksbilden skapades. Om de efterfrågade data har ändrats sedan ögonblicksbilden skapades är den ursprungliga datasidan tillgänglig i ögonblicksbilden. Förfrågningar som använder ögonblicksbilden för att komma åt oförändrade data i filgruppen är dock sannolikt att misslyckas med I/O-fel (in-/utdatafel).
  • Ta en filgrupp online

    • Du kan inte ta en filgrupp online i en databas som har några ögonblicksbilder av databasen. Om en filgrupp är offline när ögonblicksbilden skapas eller tas offline när en databasögonblicksbild finns förblir den offline. Det beror på att det innebär att återställa en fil igen, vilket inte är möjligt om det finns en databasögonblicksbild i databasen.
  • Återställ källdatabasen till ögonblicksbilden

    • Om du återställer en källdatabas till en ögonblicksbild av databasen måste alla filgrupper vara online förutom de som var offline när ögonblicksbilden skapades.