Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Service mit Paradox stört Backup ? (https://www.delphipraxis.net/82374-service-mit-paradox-stoert-backup.html)

Cyberbob_at_tot 12. Dez 2006 07:26

Datenbank: Paradox • Zugriff über: BDE

Service mit Paradox stört Backup ?
 
Guten Morgen zusammen,
ich habe hier ein komisches Phänomen, ich habe einen Windows Service als Schnittstelle zweiter Programme geschrieben. Am Anfang kam es vor, das die Selektion in den Zeitraum des Serverbackups kam. Das Backup schlug fehl. Nun habe ich es so umgeschrieben, das es nur nach 7 Uhr durchgeführt wird, da wo das Backup schon durchgeführt worden ist. Leider ist es immer noch so, das kein Backup kein Zugriff auf die Datei "PDOXUSRS.NET" hat, und dadurch das Backup fehlschlägt.

Im Programm habe ich aber alles beendet, nur bei der Selektion wird ein DB Verbindung aufgebraut.

Am Anfang der Selektion baue ich die Verbindung auf.
Delphi-Quellcode:
Paradoxquery.active := true;
Paradoxquery.open;
...

am Ende der Prozedure wird alles deaktiviert.
Delphi-Quellcode:
    Paradoxquery.Close;
    Paradoxquery.Active := false;
    Kundenquery.Close;
    Kundenquery.Active := false;
    artikelquery.Close;
    artikelquery.Active := false;
    posquery.Close;
    posquery.Active := false;
Ich sehe keinen Zugriff mehr auf die Datei, oder habe ich etwas vergessen ? Danke für alle Antworten und Anregungen.

THX

Cyberbob

mkinzler 12. Dez 2006 11:08

Re: Service mit Paradox stört Backup ?
 
Es reicht nicht die Abfage zu beenden. die Verbindung muß ausch getrennt werden. Wie ist der Query verbunden (TDatabase?)?

Cyberbob_at_tot 12. Dez 2006 11:13

Re: Service mit Paradox stört Backup ?
 
Nein, es ist nur eine Instanz von TQuery wo ich die DB wähle.

Würde Tquery.CloseDatabase helfen ?

Bernhard Geyer 12. Dez 2006 11:20

Re: Service mit Paradox stört Backup ?
 
Zitat:

Zitat von Cyberbob_at_tot
am Ende der Prozedure wird alles deaktiviert.
Delphi-Quellcode:
    Paradoxquery.Close;
    Paradoxquery.Active := false;
    Kundenquery.Close;
    Kundenquery.Active := false;
    artikelquery.Close;
    artikelquery.Active := false;
    posquery.Close;
    posquery.Active := false;

Hast Du kein TDatabase-Instanz?
Falls nein: Bau eine ein und schließe die Verbindung dann mit:
Delphi-Quellcode:
MyDB.Close
und vor allem: Close und Active := False macht das gleiche. Ist also unnötig!

Cyberbob_at_tot 12. Dez 2006 12:19

Re: Service mit Paradox stört Backup ?
 
Nein hatte ich nicht, werd ich mal versuchen und schauen wie es sich verhällt!

hoika 12. Dez 2006 12:53

Re: Service mit Paradox stört Backup ?
 
Hallo,

zum Testen lege deine DB und natürlich das NET DIR auf einen Server
(und wenn es nur die Freigabe eines W2K Proff ist).
In der Systemsteuerung (Computerverwaltung) kannst du die offenen Dateien sehen.

"An Ende" heiist du hoffentlich im finally ??


Heiko

Cyberbob_at_tot 13. Dez 2006 07:33

Re: Service mit Paradox stört Backup ?
 
Zurück nochmal zum Thema, so ganz verstehe ich das noch nicht.

Ich habe 4 Querys die ich benötige, von denen ich aus direkt auf die Datenbank zugreife. Wieso muss ich da noch ein TDatabase erstellen? wo ich auch nur am ende die Verbindung trennen würden. Ist die Treffen mit Query.close nicht und Query.active:=false vollzogen?

Habe nun eine Instanz erzeugt...
Delphi-Quellcode:
    Datenbank:=TDatabase.Create(nil);
    Datenbank.DatabaseName:=DATENBANKNAME;
    Datenbank.SessionName:='Default';
    //Zuweisung zu den Querys ?
    //kann man alles zusmamen schließen ?
    Datenbank.Free;

Das QUery sieht so aus...
Delphi-Quellcode:
 
    Paradoxquery := TQuery.Create(nil);
    Paradoxquery.DatabaseName:=DATENBANKNAME;
    Paradoxquery.SessionName := 'Default';
Danke für eure Hilfe!

THX

Cyberbob

mkinzler 13. Dez 2006 08:43

Re: Service mit Paradox stört Backup ?
 
Ich würde den Komponenten einen owner spendieren, so das sie am Programmende ordentlich freigegeben werden.

marabu 13. Dez 2006 08:43

Re: Service mit Paradox stört Backup ?
 
Guten Morgen,

die Datenbank-Komponente für sich genommen bringt nicht die gewünschte Änderung. Die property KeepConnection muss von der Standardeinstellung TRUE auf FALSE geändert werden, sonst bleibt beim Close() die Wirkung aus. Noch schlimmer ist es ohne TDatabase, weil dann intern mit den Voreinstellungen gearbeitet wird - ohne dass man es sieht.

Freundliche Grüße

Cyberbob_at_tot 13. Dez 2006 11:10

Re: Service mit Paradox stört Backup ?
 
Das hört sich logisch an mit der Keepconnection. Habe ich nun auch eingestellt.
Wie verbinde ich den die Querys mit der Datenbankinstanz ?
Arbeite ausschliesliche mit Datenbanknamen nicht mit Alias.
Und wenn ich dann Datenbank.close sage, reicht das für die Querys auch oder ist das nun zusätzlich ?

hoika 13. Dez 2006 11:36

Re: Service mit Paradox stört Backup ?
 
Hallo,


DataBase.Directory:= 'c:\data';
ODER
DataBase.AliasName:= 'alias_bla';


DataBase.DataBaseName:= 'bla';

Query.DataBaseName:= DataBase.DataBaseName;


Zum Test würde ich mal den Pfad (Directory) ändern
und kucken, ob jede Query ihre Tabellen findet.

Aber das hast du per Unit-Test ja eh schon gemacht ;)


Bei den anderen Sachen einfach probieren.
siehe mein Posting mit der Freigabe.



Heiko

Cyberbob_at_tot 13. Dez 2006 12:21

Re: Service mit Paradox stört Backup ?
 
thx!

Cyberbob_at_tot 20. Dez 2006 08:09

Re: Service mit Paradox stört Backup ?
 
Morgen zusammen,
muss leider das Thema nochmal aufgreifen, da ich die DB einfach nicht getrennt bekomme.

Habe nun am anfang alle Instanzen erstellt...
Delphi-Quellcode:
    Datenbank := TDatabase.Create(nil);
    Datenbank.AliasName := DATENBANKNAME;
    Datenbank.DatabaseName := DATENBANKNAME;
    Datenbank.KeepConnection := false;
    Datenbank.SessionName := 'Default';
    Paradoxquery := TQuery.Create(nil);
    Paradoxquery.DatabaseName := Datenbank.DatabaseName;
    Paradoxquery.SessionName := 'Default';
    Kundenquery := TQuery.Create(nil);
    Kundenquery.DatabaseName := Datenbank.DatabaseName;
    Kundenquery.SessionName := 'Default';
    artikelquery := TQuery.Create(nil);
    artikelquery.DatabaseName := Datenbank.DatabaseName;
    artikelquery.SessionName := 'Default';
    posquery := TQuery.Create(nil);
    posquery.DatabaseName := Datenbank.DatabaseName;
    posquery.SessionName := 'Default';
dann meine Abfrage gestartet....
Delphi-Quellcode:
Datenbank.Open;
  if Datenbank.Connected then
    Writelog('Verbindung zur DB hergestellt')
  else
    Writelog('Verbindung zur DB fehlgeschlagen');
  Paradoxquery.active := false;
  paradoxquery.SQL.Text := 'select ...';
  Paradoxquery.active := true;
  paradoxquery.First;
...
und wenn alles fertig ist die Verbindung getrennt.

Delphi-Quellcode:
try
    Paradoxquery.Close;
    Paradoxquery.Active := false;
    Kundenquery.Close;
    Kundenquery.Active := false;
    artikelquery.Close;
    artikelquery.Active := false;
    posquery.Close;
    posquery.Active := false;
    Datenbank.Close;
  finally
    if Datenbank.Connected then
      writelog('DB getrennt')
    else
      writelog('DB konnte nicht getrennt werden');
  end;
Leider wird mir hier immer noch Connected=true ausgegeben. Was habe ich vergessen. Habe die Query beendet und dann die Datenbank.

Weis leider nicht weiter, könne ihr mir da helfen ?

BIG THX

Cyberbob

hoika 20. Dez 2006 08:22

Re: Service mit Paradox stört Backup ?
 
Hallo,

Connected=False ?

Benutzt du vielleicht cached updates ?


Heiko

Cyberbob_at_tot 20. Dez 2006 08:26

Re: Service mit Paradox stört Backup ?
 
@hoika
cached updates ?

Connected:=false brauchte leider auch nichts! Hatte ich schon versucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz