Bevezető
Az MS SQL szerver lehetőséget nyújt adatbázisairól külön fájlonként vagy fájlcsoportonként másolatot készíteni. Ezt a viszonylag bonyolultabb metódust kifejezetten nagy adatbázisok esetén érdemes alkalmazni, ha folyamatos elérhetőségük rendkívül fontos. Ha nincs elég időnk, hogy backup-ot készítsünk az adatbázisról, akkor különálló részeiről készíthetünk ily módon eltérő időpontokban másolatot. Például ha naponta csak egy órányi időnk van a backup-ra, akkor az adatállományok feléről készítünk egy napon másolatot, és a fennmaradókról a következő napon. Ha sérül valamelyik adatfájl, nem kell az egész adatbázist visszaállítani, elég csak az adott fájl másolatát. A másolatkészítés után mindig szükséges a tranzakciónaplóról is backup-ot készíteni. Visszaállításkor így a file-ok után a napló visszaállításával az adatbázis konzisztens állapotba kerül.
Recovery Model
Ahhoz, hogy adatfájl backup-ot tudjunk végezni, be kell állítanunk a megfelelő adatbázis visszaállítási modellt. Három modell létezik:
A Simple modell a legkevesebb felügyeletet igénylő. Használatakor csak full, vagy differential backup készíthető. Tranzakciós napló backup nem készül, és minimális a naplófájl használata is. A Simple modell nem alkalmas arra, hogy adatfájl másolatot készítsünk.
A Full, illetve a Bulk-Logged modellek nagyobb védelmet nyújtanak adatainknak. A tranzakciós napló segítségével teljes visszaállíthatóságot érhetünk el, és megelőzik adatvesztésünket a legtöbb katasztrófahelyzetben. A Full model segítségével a lehető legrugalmasabb módon állítható vissza egy korábbi időpont adatbázisa. A Bulk-Logged modell nagyobb teljesítményt és kisebb logfájl használatot eredményez nagy területet igénylő műveletekhez, mint pl. index létrehozása, vagy bulk copy.
Két lehetőségünk van a modell beállítására.
Enterprise Manager elindítása után kattintsunk jobb egérgombbal az adatbázisra, majd válasszuk a tulajdonságok menüpontot. Az Options lapon választhatunk legördülő listából a modellek közül.
Transact-SQL parancsból mindez a következőképpen hajtható végre:
ALTER DATABASE database SET RECOVERY FULL | BULK_LOGGED | SIMPLE
A visszaállítási modellt a következőképpen tudjuk lekérdezni pl.:
SELECT DATABASEPROPERTYEX('Northwind', 'Recovery')
A file, vagy filecsoport mentés használata
Enterprise Manager segítségével az egér jobb gombjával kattintsunk az adatbázisra, majd az Az összes feladat > Backup Database … funkcióra kattintsunk. Itt választhatjuk a File and filegroup funkciót, és kiválaszthatjuk a menteni kívánt fájlokat, vagy fájlcsoportokat. Lehetőségünk van időzíteni is a mentést, a schedule opciót bepipálva, és szükség szerint paraméterezve.
Ugyanezt Transact-SQL utasítással is elvégezhetjük. Pl.:
BACKUP DATABASE Teszt
FILE = 'Teszt_data_1',
FILEGROUP = 'Csoport3',
FILE = 'Teszt_data_2',
FILEGROUP = 'Csoport4'
TO Teszt_backup
Viszaállítás
Enterprise Manager segítségével az egér jobb gombjával kattintsunk az adatbázisra, majd az Az összes feladat > Restore Database … funkciót válasszuk. Itt találjuk a Filegroup or files opciót, és kiválaszthatjuk, hogy melyik mentést kívánjuk visszaállítani.
Ugyanezt Transact-SQL utasítással is elvégezhetjük. Példánkban két napló backup-ot is visszaállítunk, ami a fájlok mentése után készült.
RESTORE DATABASE Teszt
FILE = 'Teszt_data_1',
FILEGROUP = 'Csoport3',
FILE = 'Teszt_data_2',
FILEGROUP = 'Csoport4'
FROM Teszt_backup
WITH NORECOVERY
Az első naplóbackup visszaállítása.
RESTORE LOG Teszt
FROM Teszt_log1
WITH NORECOVERY
Az utolsó naplóbackup visszaállítása.
RESTORE LOG Teszt
FROM Teszt_log2
WITH RECOVERY
A WITH RECOVERY/NORECOVERY feltétel használata szükséges, ha több menetben állítjuk vissza az adatbázist. A NORECOVERY segítségével lehetőséget nyújtunk a további visszaállítási procedúrákhoz, viszont az adatbázis még nem kész a használatra. Az utolsó visszaállítási szakaszban használjuk a RECOVERY feltételt, ezzel használhatóvá tesszük az adatbázist.