Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi 2007 - Ako sa na chvíľu odpojiť od databázy?

Ako som tu už cez leto písal, robím jeden databázový program v Delphi 2007. Momentálne by som potreboval urobiť zálohovanie súborov databázy priamo cez tento program. No pri spustenej databáze sa tie súbory nedajú ani len kopírovať. Ako mám program odpojiť od databázy?

Používam databázu Sybase SQL Anywhere 5.5 a v Delphi sa k nej pripájam cez ADO komponenty. Inak, keď nastavím ADOConnection.Connected := false, tak sa môj program síce odpojí od databázy, ale databáza ešte stále beží a jej súbory sa nedajú kopírovať.

Neviete mi poradiť, čo mám urobiť, aby som mohol kopírovať súbory databázy?

Předmět Autor Datum
Abys mohl zalohovat soubory SQL serveru, musis zastavit SQL server. Odpojeni z programu nestaci. Kaz…
Jan Fiala 17.11.2008 11:02
Jan Fiala
Díky, teraz aspoň viem, čo mám hľadať. Predtým som hľadal len spôsob ako zastaviť databázu. Našiel…
gorgeous007 17.11.2008 22:02
gorgeous007
Tady se pise o portaci do Delphi: http://groups.google.com/group/sybase.public.sqlany where.general/…
Jan Fiala 17.11.2008 22:10
Jan Fiala
Píšu tam akurát, že si posielali tie zdrojáky mailom. Okrem iného tam písali aj o tom, že to má byť…
gorgeous007 18.11.2008 22:32
gorgeous007
No tak už som si toho zistil viac. Na vytvorenie zálohy musím použiť 3 funkcie knižnice dbtl50t.dll,…
gorgeous007 19.11.2008 18:40
gorgeous007
Ako mám toto urobiť v Delphi?
gorgeous007 22.11.2008 16:47
gorgeous007
No, tak už dávnejšie som zistil, že riešenie cez DLL knižnicu je zbytočne komplikované. Zistil som,… poslední
gorgeous007 16.12.2008 18:43
gorgeous007

Díky, teraz aspoň viem, čo mám hľadať. Predtým som hľadal len spôsob ako zastaviť databázu.

Našiel som použitie jednej DLL knižnice, ktorú mám pri databáze a ktorú na zálohovanie využíval aj pôvodný program (predchodca môjho). Ibaže všetky príklady sú v jazyku C, ktorý veľmi neovládam. Neviete mi poradiť ako to použiť v Delphi?

Inak odkaz na ten návod je tu. Nepíše sa tam síce konkrétne o DLL knižnici, ale starý program využíva presne tie funkcie z DLLka.

Píšu tam akurát, že si posielali tie zdrojáky mailom. Okrem iného tam písali aj o tom, že to má byť niekde v dokumentácii k Sybase SQL Anywhere 7.x v ASA Reference --> CHAPTER 9. SQL Statements --> BACKUP statement, no tieto časti už v dokumentácii nie sú. Našiel som nejaké príkazy k zálohovaniu Sybase SQL Anywhere 9.0. Zajtra sa pokúsim napísať si na to zálohovanie procedúru (do databázy). Síce je to k databáze, ktorá je o 4 verzie novšia ako je tá moja, ale skúsim to.

No tak už som si toho zistil viac. Na vytvorenie zálohy musím použiť 3 funkcie knižnice dbtl50t.dll, ktorú mám v PC:

Prvou funkciou je DBToolsInit, druhou DBBackup a treťou DBToolsFini. Všetky potrebujú ako vstupný parameter premennú dátového typu Pointer, ktorý som nikdy nepoužil a veľa toho o ňom neviem. Lenže na čo má ten pointer odkazovať, keď to má byť viacero hodnôt rôzneho typu (integer, string, boolean) ?

No, tak už dávnejšie som zistil, že riešenie cez DLL knižnicu je zbytočne komplikované. Zistil som, že databáza sa dá zálohovať aj spustením pomocného programu dbbackup.exe s určitým parametrom. Konkrétne ide o:

"C:\Program Files\***\dbbackup.exe" -c "eng=***;dbn=***;uid=***;pwd=***" "C:\Program Files\***\Temp"

Tento príkaz sa mi podarilo spustiť len cez funkciu WinExec. Lenže ja potrebujem počkať, kým tento zálohovací program urobí to čo má a potom vykonať zopár ďalších vecí. Našiel som na to zdrojový kód funkcie, ktorá využíva funkciu CreateProcess, a čaká kým sa proces neukončí. Lenže táto mi spustí program dbbackup.exe len "prázdny" bez parametrov. Takže ako mám spustiť vyššie uvedený príkaz tak, aby pri spustení programu dbbackup.exe bral do úvahy aj vstupné parametre a aby som vedel počkať na jeho ukončenie?

Zpět do poradny Odpovědět na původní otázku Nahoru