Olvasás angol nyelven

Megosztás a következőn keresztül:


SQL Server-adatbázis visszaállítása egy adott időpontra (teljes helyreállítási modell)

A következőkre vonatkozik:SQL Server

Ez a témakör azt ismerteti, hogyan állíthat vissza adatbázist egy adott időpontra az SQL Serverben az SQL Server Management Studio vagy a Transact-SQL használatával. Ez a témakör csak a teljes vagy tömegesen naplózott helyreállítási modelleket használó SQL Server-adatbázisokra vonatkozik.

Fontos

A tömegesen naplózott helyreállítási modellben, ha a napló biztonsági mentése tömegesen naplózott módosításokat tartalmaz, az időponthoz kötött helyreállítás nem lehetséges a biztonsági mentés egy pontig. Az adatbázist a tranzakciónapló biztonsági mentésének végéig kell helyreállítani.

Mielőtt hozzákezdene

Ajánlások

  • Az ismeretlen időpont megkereséséhez használja a STANDBY funkciót.

  • A visszaállítási sorozat korai időpontjának megadása

Biztonság

Engedélyek

Ha a visszaállított adatbázis nem létezik, a felhasználónak CREATE DATABASE-engedélyekkel kell rendelkeznie a VISSZAÁLLÍTÁS végrehajtásához. Ha az adatbázis létezik, a RESTORE engedélyek alapértelmezés szerint biztosítva vannak a sysadmin és dbcreator rögzített szerver szerepkörökhöz, valamint az adatbázis tulajdonosának (dbo). (A FROM DATABASE_SNAPSHOT opció esetén az adatbázis mindig létezik.)

A VISSZAÁLLÍTÁSi engedélyek olyan szerepkörökhöz lesznek adva, amelyekben a tagsági adatok mindig könnyen elérhetők a kiszolgáló számára. Mivel a rögzített adatbázisszerepkör-tagság csak akkor ellenőrizhető, ha az adatbázis elérhető és sértetlen, ami nem mindig történik meg a VISSZAÁLLÍTÁS végrehajtásakor, a db_owner rögzített adatbázis-szerepkör tagjai nem rendelkeznek VISSZAÁLLÍTÁSi engedélyekkel.

Az SQL Server Management Studio használata

Az adatbázis visszaállítása egy adott időpontra

  1. Az Object Explorerben csatlakozzon az SQL Server adatbázismotor megfelelő példányához, és bontsa ki a kiszolgálófát.

  2. Nyissa meg Adatbázisok. Az adatbázistól függően válasszon ki egy felhasználói adatbázist, vagy bontsa ki Rendszeradatbázisok, majd válasszon ki egy rendszeradatbázist.

  3. Kattintson a jobb gombbal az adatbázisra, mutasson a Feladatokmenüpontra, mutasson a Visszaállításmenüpontra, majd kattintson az Adatbázisparancsra.

  4. Az Általános lapon a Forrás szakaszban adja meg a visszaállítani kívánt biztonsági mentési csoportok forrását és helyét. Válasszon az alábbi lehetőségek közül:

    • Adatbázis

      Válassza ki a legördülő listából visszaállítani kívánt adatbázist. A lista csak azokat az adatbázisokat tartalmazza, amelyek biztonsági mentése az msdb biztonsági mentési előzményeinek alapján történt.

    Megjegyzés

    Ha a biztonsági mentés egy másik kiszolgálóról származik, a célkiszolgáló nem rendelkezik a megadott adatbázis biztonsági mentési előzményadataival. Ebben az esetben válassza Eszköz lehetőséget a visszaállítani kívánt fájl vagy eszköz manuális megadásához.

    • eszköz

      Kattintson a tallózás (...) gombra a Biztonsági mentési eszközök kiválasztása párbeszédpanel megnyitásához. A Biztonsági mentés adathordozótípus mezőben válasszon egyet a felsorolt eszköztípusok közül. Ha ki szeretne jelölni egy vagy több eszközt a Adathordozó biztonsági mentése mezőben, kattintson hozzáadása gombra.

      Miután hozzáadta az eszközöket a Adathordozó biztonsági mentése listamezőhöz, kattintson az OK gombra az Általános lapra való visszatéréshez.

      A Forrás: Eszköz: Adatbázis listamezőben válassza ki a visszaállítani kívánt adatbázis nevét.

      Megjegyzés Ez a lista csak akkor érhető el, ha Eszköz van kiválasztva. Csak azok az adatbázisok lesznek elérhetők, amelyek biztonsági másolatokkal rendelkeznek a kiválasztott eszközön.

  5. A Cél szakaszban a Adatbázis mező automatikusan ki lesz töltve a visszaállítandó adatbázis nevével. Az adatbázis nevének módosításához írja be az új nevet az Adatbázis mezőbe.

  6. Kattintson Ütemterv elemre a biztonsági mentési ütemterv párbeszédpanel megnyitásához.

  7. A Visszaállítás szakaszban kattintson a Adott dátum és időgombra.

  8. A Dátum és Idő mezővel vagy a csúszkasávon megadhat egy adott dátumot és időpontot, amelynél a visszaállításnak meg kell állnia. Válassza OKlehetőséget.

    Megjegyzés

    A Idősor Időtartam mezőben módosíthatja az idősoron megjelenített időt.

  9. Miután megadott egy adott időpontot, a Database Recovery Advisor biztosítja, hogy csak az adott időpontra való visszaállításhoz szükséges biztonsági másolatok legyenek kiválasztva a biztonsági mentési csoportok Visszaállítás oszlopában rács visszaállításához. Ezek a választott biztonsági másolatok alkotják a pillanatnyi állapot szerinti visszaállításhoz javasolt visszaállítási tervet. Csak a kijelölt biztonsági másolatokat használja az időponthoz kötött visszaállítási művelethez.

    A Biztonsági mentési csoportok oszlopairól a rács visszaállításához lásd: Adatbázis visszaállítása (általános lap). A Database Recovery Advisorral kapcsolatos információkért tekintse meg a Helyreállítás és visszaállítás áttekintése (SQL Server)részt.

  10. A Beállítások lapon, a Visszaállítási beállítások panelen az alábbi lehetőségek közül választhat, ha megfelelő a helyzethez:

    • Meglévő adatbázis felülírása (WITH REPLACE)

    • Replikációs beállítások megőrzése (WITH KEEP_REPLICATION)

    • A visszaállított adatbázishoz való hozzáférés korlátozása (WITH RESTRICTED_USER)

    További információ ezekről a beállításokról: Adatbázis visszaállítása (Beállítások lap).

  11. Válasszon egy lehetőséget a Helyreállítási állapot mezőhöz. Ez a mező határozza meg az adatbázis állapotát a visszaállítási művelet után.

    • RESTORE WITH RECOVERY az alapértelmezett viselkedés, amely a nem véglegesített tranzakciók visszaállításával használatra kész állapotba állítja az adatbázist. További tranzakciónaplók nem állíthatók vissza. Ha most állítja vissza az összes szükséges biztonsági mentést, válassza ezt a lehetőséget.

    • VISSZAÁLLÍTÁS NORECOVERY, amely nem teszi működőképessé az adatbázist, és nem hajtja végre a függőben lévő tranzakciók visszagörgetését. További tranzakciónaplók állíthatók vissza. Az adatbázis csak a helyreállítás után használható.

    • RESTORE WITH STANDBY, amely csak olvasható módban hagyja az adatbázist. Visszavonja a nem véglegesített tranzakciókat, de menti a visszavonási műveleteket egy készenléti fájlba, hogy a helyreállítási effektusok visszaállíthatók legyenek.

    A beállítások leírását a Adatbázis visszaállítása (Beállítások lap)című témakörben talál.

  12. A visszaállítás előtt készítsen biztonsági másolatot a tail-logról, akkor lesz kiválasztva, ha a kiválasztott időponthoz szükséges. Ezt a beállítást nem kell módosítania, de dönthet úgy is, hogy biztonsági másolatot készít a napló farkáról, még akkor is, ha nincs rá szükség.

  13. A visszaállítási műveletek sikertelenek lehetnek, ha aktív kapcsolat van az adatbázissal. Ellenőrizze a Meglévő kapcsolatok bezárása lehetőséget annak ellenőrzéséhez, hogy a Management Studio és az adatbázis közötti összes aktív kapcsolat le van-e zárva. Ez a jelölőnégyzet a visszaállítási műveletek végrehajtása előtt egyfelhasználós üzemmódra állítja az adatbázist, és befejezett állapotban többfelhasználós üzemmódra állítja az adatbázist.

  14. Válassza a Kérés lehetőséget az egyes biztonsági mentési visszaállítása előtt, ha az egyes visszaállítási műveletek között szeretne rákérdezni. Ez általában csak akkor szükséges, ha az adatbázis nagy méretű, és a visszaállítási művelet állapotát szeretné figyelni.

A Transact-SQL használata

A megkezdése előtt

A rendszer mindig visszaállít egy megadott időpontot egy napló biztonsági mentéséből. A RESTORE LOG utasítás sorozat minden egyes utasításában meg kell adnia a célidőt vagy a tranzakciót egy azonos STOPAT záradékban. Az időponthoz kötött visszaállítás előfeltételeként először vissza kell állítania egy teljes adatbázis biztonsági mentését, amelynek végpontja korábbi a cél visszaállítási időnél. A teljes adatbázis-biztonsági mentés lehet régebbi, mint a legutóbbi teljes adatbázismentés, feltéve hogy minden azt követő naplómentést visszaállít, beleértve azt a naplómentést is, amelyik az Ön által választott időpontot tartalmazza.

Annak megállapításához, hogy melyik adatbázis biztonsági mentését szeretné visszaállítani, megadhatja a WITH STOPAT záradékot a RESTORE DATABASE utasításban, hogy hibát okozzon, ha egy adat biztonsági mentése túl friss a megadott célidőhöz. A teljes adatmentés mindig visszaáll, még akkor is, ha tartalmazza a célidőt.

Alapszintű Transact-SQL szintaxis

NAPLÓ VISSZAÁLLÍTÁSA adatbázis_név<mentési_eszköz> használatával megáll STOPAT időpontnál =, helyreállítás...

A helyreállítási pont az a legutóbbi tranzakciós véglegesítés, amely az dátum-időérték értékénél vagy azt megelőzően történt, és amelyet az időponthatároz meg.

Ha csak az adott időpont előtt végrehajtott módosításokat szeretné visszaállítani, adja meg a STOPAT =időt minden visszaállított biztonsági mentéshez. Ez biztosítja, hogy ne lépje túl a célidőt.

Adatbázis visszaállítása egy adott időpontra

Megjegyzés

Erre az eljárásra példa: Példa (Transact-SQL), a szakasz későbbi részében.

  1. Csatlakozzon ahhoz a kiszolgálópéldányhoz, amelyen vissza szeretné állítani az adatbázist.

  2. Hajtsa végre a RESTORE DATABASE utasítást a NORECOVERY beállítással.

    Megjegyzés

    Ha egy részleges visszaállítási sorozat kizárja FILESTREAM fájlcsoportot, az időponthoz kötött visszaállítás nem támogatott. A visszaállítási sorrendet kényszerítheti a folytatásra. A RESTORE utasításból kihagyott FILESTREAM-fájlcsoportok azonban soha nem állíthatók vissza. Időponthoz kötött visszaállítás kényszerítéséhez adja meg a CONTINUE_AFTER_ERROR beállítást a STOPAT, STOPATMARK vagy STOPBEFOREMARK beállítással együtt, amelyet a későbbi VISSZAÁLLÍTÁSI NAPLÓ utasításokban is meg kell adnia. Ha CONTINUE_AFTER_ERROR ad meg, a részleges visszaállítási sorozat sikeres lesz, és a FILESTREAM fájlcsoport helyreállíthatatlanná válik.

  3. Állítsa vissza az utolsó különbségi adatbázis biztonsági mentését, ha van ilyen, az adatbázis helyreállítása nélkül (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  4. Alkalmazza az egyes tranzakciónapló biztonsági mentéseket ugyanabban a sorrendben, amelyben létrehozták őket, megadva azt az időpontot, amikor le szeretné állítani a napló visszaállítását (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT =time, RECOVERY).

    Megjegyzés

    A RECOVERY és STOPAT opciók. Ha a tranzakciónapló biztonsági mentése nem tartalmazza a kért időt (például ha a megadott idő meghaladja a tranzakciónapló által lefedett idő végét), a rendszer figyelmeztetést hoz létre, és az adatbázis nem lesz helyreállítva.

Példa (Transact-SQL)

Az alábbi példa egy adatbázis állapotát állítja vissza a April 15, 202012:00 AM állapotába, és egy olyan visszaállítási műveletet mutat be, amely több napló biztonsági mentését is magában foglalja. A biztonsági mentési eszközön AdventureWorksBackups, a visszaállítandó teljes adatbázis biztonsági mentése az eszközön a harmadik biztonsági mentési csoport (FILE = 3), az első napló biztonsági mentése a negyedik biztonsági mentési csoport (FILE = 4), a második pedig az ötödik biztonsági mentési csoport (FILE = 5).

Fontos

A AdventureWorks2022 adatbázis az egyszerű helyreállítási modellt használja. A naplók biztonsági mentésének engedélyezéséhez a teljes adatbázis biztonsági mentése előtt az adatbázis úgy lett beállítva, hogy a teljes helyreállítási modellt használja a ALTER DATABASE AdventureWorks SET RECOVERY FULLhasználatával.

RESTORE DATABASE AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=3, NORECOVERY;  
  
RESTORE LOG AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
  
RESTORE LOG AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
RESTORE DATABASE AdventureWorks WITH RECOVERY;   
GO  
  

Kapcsolódó tevékenységek

Lásd még:

biztonsági másolatkészlet (Transact-SQL)
VISSZAÁLLÍTÁS (Transact-SQL)
RESTORE HEADERONLY (Transact-SQL)