Delphi - Elmentett adatbázis és tranzakciós napló visszaállítása

Transact SQL 23. rész

forráskód letöltése
A cikksorozat előző részében azt néztük meg, hogy hogyan tudunk az adatbázisról és a tranzakciós naplóról biztonsági másolatot készíteni. Ebben a részben annak járunk utána, hogy az így elmentett adatokat hogyan tudjuk visszaállítani.
A visszaállításnak többféle módja van. Visszaállíthatjuk az egész adatbázist, vagy csak egy részét. A visszaállítás parancsa a RESTORE DATABASE, illetve ha csak a tranzakciós naplót szeretnénk visszaállítani, akkor azt a RESTORE LOG utasítással tudjuk megtenni. Az utasítás után meg kell adni az adatbázis nevét, illetve ha fájlokat, vagy fájlcsoportokat akarunk visszaállítani, akkor ezek neveit (lásd. BACKUP DATABASE, FILE és FILEGROUP paraméterek). Ezután következik a FROM kulcsszó, ami után meg kell adni azt az eszközt, ahol a biztonsági mentés található. Ezt követően megadhatunk különböző opciókat a WITH kulcsszó után.
RESTRICTED_USER
Az újonnan visszaállított adatbázishoz való hozzáférést csak a db_owner, dbcreator, illetve sysadmin felhasználóknak engedélyezi. Az SQL Server 2000-ben a DBO_ONLY kapcsoló helyett lépett be. A DBO_ONLY kapcsoló is használható a visszafelé kompatibilitás miatt.
A RECOVERY opcióval együtt használható.
FILE
Megadja, hogy melyik sorszámú mentést kell visszaállítani.
PASSWORD
Ha a biztonsági mentés jelszóval védett, akkor ezzel a paraméterrel megadhatjuk a visszaállításhoz szükséges jelszót.
MEDIANAME
A média neve, amire a biztonsági mentés történik. Ha meg van adva, akkor ellenőrzi, hogy a mentésnél megadott média névvel egyezik-e, és ha nem, akkor megszakítja a visszaállítást. Ha nincs megadva, akkor nem végez ellenőrzést. A média neve használata biztonságosabbá teszi a mentés és visszaállítás műveleteket.
MEDIAPASSWORD
A médiához való hozzáféréshez szükséges jelszó. Ha a mentésnél meg lett adva, akkor a visszaállításhoz is szükséges.
MOVE ’logikai_fájlnév’ TO ’op. fájlnév’
Alapesetben az adatbázis visszaállítása arra a helyre történik, ahonnan el lett mentve. Ezzel az utasítással megadható egy másik hely is minden logikai fájlnak külön-külön.
RECOVERY
Utasítja az SQL Servert, hogy görgesse vissza a nem véglegesített tranzakciókat. Ha nincs megadva a NORECOVERY vagy STANDBY opció, akkor ez az alapértelmezett.
NORECOVERY
Utasítja az SQL Servert, hogy ne görgesse vissza a nem véglegesített tranzakciókat. Ebben az esetben a visszaállítás után az adatbázis még nem használható. Ez hasznos lehet például két egymást követő visszaállítási műveletnél, hogy a visszaállítások között az adatbázis tartalma ne változzon.
STANDBY
Megadható egy ún. undo fájl, amelyből visszaállítató a RESTORE előtti állapot. Ha a megadott fájl már létezik, akkor az SQL Server felülírja azt, ha nem, akkor létrehozza. Ugyanaz a fájl használható több visszaállítási műveletnél, feltéve, hogy ugyanarra az adatbázisra vonatkoznak.
NOUNLOAD
Megadja, hogy a szalagról történő visszaállítás után a kazettát ne adja ki.
NOREWIND
A visszaállítás után a szalagot nem tekeri vissza.
REWIND
A visszaállítás után a szalagot visszatekeri. Ez az alapértelmezett, így ezt a kapcsolót nem kell megadni.
UNLOAD
Kiadja a kazettát, miután a szalagról megtörtént az adatbázis visszaállítása.
REPLACE
Megadja, hogy a visszaállításkor hozza létre az adatbázist, ha az nem létezik az adott szerveren, illetve felülírja a már létező, azonos nevű adatbázist.
RESTART
A megszakított visszaállítási műveletet folytatja, ahol az abbamaradt. Ezzel idő takarítható meg. Ez az opció csak abban az esetben használható, ha a visszaállítás szalagos egységről történik, és a mentés több szalagot foglal el.
STATS
Megadja, hogy hány %-onként kell a folyamatjelzőt frissíteni. Az alapértelmezett érték 10.
PARTIAL
Jelzi, hogy csak részleges visszaállítás fog történni.
LOG
Megadja, hogy az elmentett tranzakciós naplót alkalmazza az adatbázisra. A tranzakciós naplókat csak sorrendben lehet aktualizálni, ezt az SQL Server ellenőrzi is. Ha több visszaállítási művelet követi egymást, akkor az utolsót kivéve használjuk mindegyiknél a NORECOVERY kapcsolót.
STOPAT
Az adatbázis azon állapotát állítja vissza, ami a megadott időpontban volt. A tranzakciós naplónak csak a megadott idő előtti tartalmát véglegesíti.
STOPATMARK
A megadott nevű jelnél megáll. Ha az AFTER kulcsszó után megadunk egy dátumot, akkor annál a jelnél áll meg, amelynek a neve és a dátuma is megegyezik a megadottakkal. Még azokat a tranzakciókat is visszaállítja, amelyek a megadott nevű jelet tartalmazzák.
STOPBEFOREMARK
A STOPATMARK-tól annyiban különbözik, hogy csak azokat a tranzakciókat állítja vissza, amelyek a megadott nevű jelet tartalmazó tranzakció előtt állnak.

Transact SQL cikksorozat