Delphi - Adatbázis és tranzakciós napló mentése

Transact SQL 22. rész

forráskód letöltése
Az adatvesztés már egy kisebb adatbázis esetén is rendkívüli kárt okozhat, ezért bizonyos időközönként szükséges az adatbázisról biztonsági másolatot készítenünk. A Transact SQL erre is lehetőséget nyújt.
Lehetőségünk van az egész adatbázis, a tranzakciós napló, vagy csak bizonyos fájlok, fájlcsoportok mentésére.
Az adatbázis mentésének parancsa a BACKUP DATABASE. Az utasítás után közvetlenül meg kell adnunk az adatbázis nevét, majd a TO kulcsszó után azt az eszközt, ahová a mentés készül (ez lehet akár egy fájl is). Ha csak bizonyos fájlcsoportokat szeretnénk menteni, akkor a TO kulcsszó előtt azokat is meg kell adnunk. A WITH kulcsszó után különböző paramétereket állíthatunk be.
Ha csak a tranzakciós naplót szeretnénk menteni, akkor a BACKUP LOG utasítást kell használnunk.
A példaprogramban az SQl Server példa adatbázisát mentjük el a C:\Backup könyvtárba (backup.sql). A mentésnél megadott könyvtárnak léteznie kell, különben hibaüzenetet kapunk!
DISK | TAPE
A TO kulcsszó után használhatjuk a DISK, vagy a TAPE kulcsszót attól függően, hogy a mentés helye lemez, vagy mágnesszalag. A DISK illetve TAPE kulcsszó után egyenlőségjellel meg kell adni az elérési útvonalat és a fájl nevét. Ha relatív elérési útvonalat adunk meg, akkor az alapértelmezett backup könyvtárba ment.
BACKUP DATABASE Nortwind TO DISK = ’C:\TEMP\NWIND.DAT’
BLOCKSIZE
A fizikai blokkméret bájtban. A legtöbb esetben ennek beállítása automatikusan történik (általában 65535 bájt, 64K).
DESCRIPTION
Egy maximum 255 karakterből álló sztring, amely tetszőleges szöveget tartalmazhat.
DIFFERENTIAL
Megadja, hogy az adatbázisnak csak egy bizonyos része módosult a legutóbbi mentés óta. A „differenciális biztonsági mentés” általában kevesebb helyet igényel, mint a teljes mentés, mert csak a változásokat rögzíti.
EXPIREDATE
Megadhatunk egy dátumot, amikorra a biztonsági mentés elavul, és felülírhatóvá válik.
RETAINDAYS
Megadhatjuk, hogy a biztonsági mentés hány nap múlva válik elavulttá, és így felülírhatóvá.
PASSWORD
Megadhatunk egy jelszót, amelynek majd a visszaállításkor lesz jelentősége. Csak az tudja majd visszaállítani az adatbázist, aki ismeri a jelszót.
FORMAT
Felülírja az összes mentésben résztvevő média (fájl vagy szalag) fejlécét. A felülírás érvényteleníti a média eddigi összes bejegyzését, ezért ezt az opciót óvatosan kezeljük. A FORMAT opció magában foglalja az INIT és a SKIP kapcsolókat.
NOFORMAT
Nem írja felül a média fejlécét, és a bejegyzéseket sem, kivéve akkor, ha az INIT kapcsoló is meg van adva.
INIT
Az összes előző mentést felülírja, de a fejlécet változatlanul hagyja. Csak azokat a mentéseket tudja felülírni, amelyeknél az EXPIREDATE vagy RETAINDAYS opciókban megadott időpont (az előző mentésnél) már lejárt.
NOINIT
Az újabb mentés az előzőekhez lesz hozzáfűzve. Ezt az opciót nem kell külön megadni, mivel ez az alapértelmezett.
MEDIADESCRIPTION
Egy maximum 255 karakterből álló tetszőleges szöveget tartalmazó leírás.
MEDIANAME
A média neve maximum 128 karakteren. Ha már van előző mentés, akkor meg kell egyeznie az előző mentés nevével. Ha a név nincs megadva, vagy a SKIP opció be van kapcsolva, akkor nem végez ellenőrzést a névvel kapcsolatban.
MEDIAPASSWORD
A médiához tartozó jelszót adhatjuk meg. Ez a jelszó szükséges ahhoz, hogy az adott médián biztonsági másolatot készítsünk.
NAME
A biztonsági mentés neve, maximum 128 karakteren. Ha nincs megadva, akkor a név egy üres sztring lesz.
REWIND
Utasítja az SQL Server-t, hogy a mentés elkészülte után a szalagot tekerje vissza. Ha a NOREWIND nincs megadva, akkor ez az alapértelmezett.
NOREWIND
Nyitva hagyja a szalagot, és nem tekeri vissza. Az SQL Server mindaddig birtokolja a szalagot, amíg egy BACKUP vagy RESTORE művelet nem történik a WITH REWIND opcióval. A NOREWIND magában foglalja az UNLOAD opciót is.
SKIP
Kikapcsolja a lejárati idő és a név ellenőrzését, melyek megakadályozhatják a mentés felülírását.
NOSKIP
Utasítja az SQL Server-t, hogy ellenőrizze minden mentés lejárati idejét, mielőtt felülírná azokat.
UNLOAD
Megadja, hogy a mentés után a szalag vissza legyen tekerve, és a kazettát kiadja. Ez az opció értelemszerűen csak szalagos egységeknél használható.
NOUNLOAD
Utasítja az SQL Servert, hogy a mentés után ne adja ki a kazettát.
RESTART
Az opcióval egy előzőleg félbeszakított mentési műveletet lehet folytatni, amivel idő takarítható meg, mivel a mentést attól a ponttól folytatja, ahol abbamaradt.
STATS
A megadott időközönként kiírja, hogy éppen hány százaléknál tart a mentés. Ha nem adunk meg értéket, akkor 10%-onként jelez.
FILE
Ha fájlokat mentünk csak, akkor a fájl nevét adhatjuk meg az egyenlőségjel után. A FILE az adatbázis neve után áll, mint az alábbi példában:
BACKUP DATABASE NorthWind
   FILE = 'MyNwind_data_1',
   FILE = 'MyNwind_data_2', 
   TO ...
FILEGROUP
Hasonló a FILE-hoz, de itt fájlcsoportokat adhatunk meg. Szintén az adatbázis neve után vannak felsorolva.
LOG
Csak a tranzakciós napló mentése történik meg.
NO_LOG | TRUNATE_ONLY
A két opció megegyezik. Hatásuk az, hogy levágják a tranzakciós napló nem aktív részeit, és így helyet szabadítanak fel.
NO_TRUNCATE
Engedélyezi a tranzakciós napló mentését abban az esetben is, ha az adatbázis sérült.

Transact SQL cikksorozat