Delphi - TIBBackupService komponens

Interbase 17. rész

forráskód letöltése
Vizsgáljuk meg, hogyan tudunk adatbázisunkról biztonsági másolatot készíteni.
Az IBBackupService komponens segítségével beépíthetjük programunkba a biztonsági másolat készítésének lehetőségét. Ezt a szolgáltatást azonban csak az adatbázis tulajdonosa vagy a SYSDBA felhasználó tudja igénybe venni. Tulajdonságok
  • BackupFile: A biztonsági másolatot tartalmazó fájl neve. Ha rendszerünk NT-s és egy másik hálózati gépen is az NT operációs rendszer fut, akkor az UNC elnevezésű konvenciót használva hálózati mentést is végezhetünk. Más esetekben a program ezt a lehetőséget nem támogatja.
  • BlockingFactor: Csak szalagos mentés esetén használjuk.
  • Options: A mentés tulajdonságait állíthatjuk be:
- IgnoreChecksum: Az ellenőrző összeget (checksum) lapról-lapra határozzák meg az adatok helyességének ellenőrzésére. Ha az összeg hibás, az adatbázis adott lapja valamilyen oknál fogva sérült. Az opcióval beállíthatjuk, hogy a hibás ellenőrző összegű lapról másolat készüljön-e. Ha az opciónak True értéket adunk, akkor ez az ellenőrzés elmarad, és minden lapról másolat készül.
- IgnoreLimbo: A limbo tranzakció egy hibás tranzakció, akkor keletkezik, amikor egy tranzakciót valamilyen ok megakadályoz abban, hogy befejeződjön. Az adatmódosítás bekerül az adatbázisba, de úgy, hogy sem commit, sem rollback utasítás nem érkezik a rendszerhez. Tehát úgy foghatjuk fel, hogy egy tranzakció folyamán adatmódosítás történik, de nem érkezik a tranzakció befejezésére utasító parancs. Az adatbázis adminisztrátora tudja eltávolítani. A lehetőség beállításával (True) a mentett adatbázisba nem kerülnek át a limbo tranzakció eredményei.
- MetadataOnly: Az adatbázisra jellemző adatokat menthetjük. Hasznos lehet, ha az adatbázisról egy üres másolatot készítünk, az adatokat viszont nem mentjük.
- NoGarbageCollection: Tudjuk, hogy az adataink régebbi változatait automatikusan elmenti a rendszer egy speciális területre. Ha ezeket az adatokat nem szeretnénk elmenteni, állítsuk hamisra.
- OldMetadataDesc: Ha az adatbázisra jellemző adatokat a korábbi verziók formájában szeretnénk menteni, használjuk ezt a lehetőséget.
- NonTransportable: Ha értéke false, akkor az adatokat egy általános formában menti a rendszer, hogy bármilyen gépen, bármilyen operációs rendszer alatt (Unix, Sun) visszaállíthatók legyenek, amelyek képesek az InterBase futtatására.
- ConvertExtTables: Állítsuk igazra, ha azt szeretnénk, hogy konvertáljunk külső fájlokat a belső tábláinkba.

Események
  • OnAttach: Az adatbázishoz kapcsolódáskor bekövetkező esemény.
  • OnLogin: A bejelentkezéskor aktiválódó esemény.

Metódusok
  • GetNextLine: Az információk következő sorát adja vissza.
  • ServiceStart: A szolgáltatás elindítását végző eljárás.

A komponens használata
Húzzunk a Form-ra egy TIBBackupService, egy TMemo és egy TButton komponenst.
Adjuk meg a nevét és az elérési útját a menteni kívánt adatbázisnak a DatabaseName tulajdonságnál, és állítsuk be a BackupFile tulajdonságot. Ezeket a kódban is beállíthatjuk:
procedure Tform1.Button1Click(Sender:Tobject);
begin
with IBBackupService1 do
  begin
    DatabaseName:=’d:\gknyilv.gdb’;
    BackupFile.Add(’d:\mentes\gknyilv.gbk’);
  end;
end;
Kapcsolódjunk az adatbázishoz:
…
with IBBackupService1 do
begin
  ServerName:=’gep’;
  LoginPrompt:=false;
  Params.Add(’user_name=SYSDBA’);
  Params.Add(’password=masterkey’);
  Active:=true;
end;
…
Állítsuk be a lehetőségeket és indítsuk a mentést:
…
with IBBackupService1 do
try
  Verbose:=true;  //információkat kapunk a mentési folyamatról
  Options:= [NonTransportable, IgnoreLimbo];
  ServiceStart;   //a mentési folyamat elindítása
  with not Eof do
  Memo1.Lines.Add(GetNextLine);  // az információk megjelenítése
finally
  Active:=false;
 end;
end;
Ha több fájlba szeretnénk adatbázisunkat menteni:
BackupFile.Add(’d:\mentes\e1.gbk=2048’);
BackupFile.Add(’d:\mentes\e2.gbk=4096’);
BackupFile.Add(’d:\mentes\e3.gbk’);
A számok a fájlok méretét szabályozzák. Az utolsó fájlhoz nem szabad méretet definiálnunk.



Interbase cikksorozat