Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Kann ein Dienst über BDE auf eine Datenbank zugreifen? (https://www.delphipraxis.net/54854-kann-ein-dienst-ueber-bde-auf-eine-datenbank-zugreifen.html)

HelmutP 12. Okt 2005 14:43

Datenbank: Oracle • Version: 8i • Zugriff über: BDE

Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Hallo,

ich möchte aus einer fertigen Anwendung einen Dienst machen.
Diese Anwendung baut über BDE eine Verbindung zu einer Oracle-Datenbank auf.
Ich habe es bereits mit verschiedenen Tools (AppToService, Firedeamon) probiert, die eine Anwendung zum Dienst machen. Damit hat es nicht geklappt.
Jetzt möchte ich es selber programmieren, frage mich aber ob das überhaupt geht.

Kann ein Anwendung, die als Windows-Dienst läuft, eine Verbindung über die BDE zur Datenbank aufbauen?

Bernhard Geyer 12. Okt 2005 15:14

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Zitat von HelmutP
Kann ein Anwendung, die als Windows-Dienst läuft, eine Verbindung über die BDE zur Datenbank aufbauen?

Eigentlich Ja. Aber mach nicht den Fehler das du den zu verwendeten ODBC-Eintrag als "Benutzer DSN" anlegst. Dieser ist in einem Dienst (unter anderem Konto) nicht sichtbar. "System-DSN" wäre das richtige.

Welchen Fehlermeldung bekommst Du denn?

BeerBear 12. Okt 2005 15:27

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Was hat nicht geklappt? Die Anwendung zum Dienst zu machen, oder dass der Dienst die Verbindung zur DB herstellt?

Ich hab dann wohl ein ähnliches Problem. Ich hab in naher Zukunft die Aufgabe eine Art Taskplaner zu schreiben, dessen Aufgaben ebenfalls in einer Oracle DB abgelegt werden.
Das ganze soll dann auf einem Server laufen und auch gestartet werden, wenn kein Benutzer angemeldet ist.
Und die einzige Möglichkeit das für alle Windows Versionen zu realisieren, ist die Anwendung als Dienst laufen zu lassen, da Dienste beim Systemstart gestartet werden. ( Ab WIN 2000 gibt es eine andere Möglichkeit. )

Dazu hab ich auch diverse Tools wie AppToService,... getestet.
Allerdings nur mit einer Anwendung, die lokal eine Log Datei erstellt in die sie schreibt, wann sie gestartet wurde. Hat wunderbar geklappt und ich bin davon ausgegangen, dass das dann auch mit allen anderen Anwendungen funktioniert.

MfG Flo

HelmutP 12. Okt 2005 15:42

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Ich habe mit "AppToService" die Anwendung als Dienst installieren können. Die Verbindung zur Datenbank war aber dann nicht möglich.
Mit dem Tool "Firedeamon" hatte ich auch keinen Erfolg. Obwohl ich dem Support das Problem genau geschildert habe.

Und ODBC spielt in der Anwendung überhaupt keine Rolle.

Bernhard Geyer 12. Okt 2005 15:57

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Zitat von HelmutP
Und ODBC spielt in der Anwendung überhaupt keine Rolle.

BDE und Oracle aber kein ODBC. D.h. du verwendest wohl SQL-Links bzw. wie ist dein genauer Zugriffsweg

Anwendung -> BDE -> ??? -> Oracle8

Jelly 12. Okt 2005 16:56

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Zitat von BeerBear
Und die einzige Möglichkeit das für alle Windows Versionen zu realisieren, ist die Anwendung als Dienst laufen zu lassen, da Dienste beim Systemstart gestartet werden.

Windows 95,98 und ME unterstützen keine Dienste... Nur zur Vervollständigung.

BeerBear 13. Okt 2005 08:28

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Schon mal einen Windows 98 Server gesehen?

Ich meine natürlich alle Versionen auf der NT Schiene.

jensw_2000 13. Okt 2005 08:53

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zu beachten wäre da imho noch, dass das lokale Systemkonto keinen Zugriff auf Netzwerkressourcen hat.
Eventuell funktioniert es deshalb nicht.
Starte den Dienst doch mal (testweise) mit einem Benutzerkonto, das standardmäßig Zugriff auf die Datenbank hat.

:hi:

HelmutP 17. Okt 2005 15:56

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

BDE und Oracle aber kein ODBC. D.h. du verwendest wohl SQL-Links bzw. wie ist dein genauer Zugriffsweg
Die BDE hat einen eigenen Oracle-Treiber. D.h., von der BDE kann man direkt auf Oracle zugreifen.

Zitat:

Starte den Dienst doch mal (testweise) mit einem Benutzerkonto, das standardmäßig Zugriff auf die Datenbank hat.
Das habe ich auch schon probiert, aber ohne Erfolg. Es war keine Verbindung zur Datenbank möglich.

Bernhard Geyer 17. Okt 2005 16:41

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Zitat von HelmutP
Zitat:

BDE und Oracle aber kein ODBC. D.h. du verwendest wohl SQL-Links bzw. wie ist dein genauer Zugriffsweg
Die BDE hat einen eigenen Oracle-Treiber. D.h., von der BDE kann man direkt auf Oracle zugreifen.

Das wäre mir neu das dieser Treiber ähnlich wie Paradox oder der Acceess-DAO-Treiber eingebunden wäre. Ich habe nämlich keinen bei meiner D6-Pro-Version. Also müsste es ein SQL-Links-Treiber sein.

Kannst Du uns eigentlich die genaue Fehlermeldung geben. Oder hängt sich das Programm auf?

HelmutP 18. Okt 2005 08:02

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Das wäre mir neu das dieser Treiber ähnlich wie Paradox oder der Acceess-DAO-Treiber eingebunden wäre.
In der BDE 4.0 ist dieser Oracle-Treiber enthalten. Nach der Installation erscheint in der BDE-Verwaltung bei Konfiguration -> Treiber -> Native der Eintrag "Oracle". Diesen Treiber kann man benutzen um, ähnlich wie bei Paradox, eine Verbindung zur Datenbank aufzubauen.

Wie kann man denn von der BDE aus über ODBC eine Verbindung zur Datenbank aufbauen?
Vielleicht geht es ja auf diesem Weg!

Thanatos81 18. Okt 2005 08:31

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Muss es denn unbedingt die BDE sein? Sonst schau dir doch mal die ZeosLib an, die kann auch auf Oracle zu greifen und du musst auch beim Endanwender keine BDE installieren.

HelmutP 18. Okt 2005 08:50

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Zitat von Thanatos81
Muss es denn unbedingt die BDE sein?

Leider muss es die BDE für diese Anwendung sein. Sie ist schon fertig programmiert und dabei wurden Komponenten wie "TDatabase" und "TQuery" benutzt.
Bei der Erstellung wurde vergessen das Programm als Dienst umzusetzen. Nun versuche ich mit möglichst wenig Aufwand dies nachzuholen.

Bernhard Geyer 18. Okt 2005 08:54

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Zitat von HelmutP
Zitat:

Das wäre mir neu das dieser Treiber ähnlich wie Paradox oder der Acceess-DAO-Treiber eingebunden wäre.
In der BDE 4.0 ist dieser Oracle-Treiber enthalten. Nach der Installation erscheint in der BDE-Verwaltung bei Konfiguration -> Treiber -> Native der Eintrag "Oracle". Diesen Treiber kann man benutzen um, ähnlich wie bei Paradox, eine Verbindung zur Datenbank aufzubauen.

Welche Delphi-Version hast du den (Pro/Enterprise). Da ich nur die Pro habe kenn ich die Integration der SQL-Links nicht so genau
Zitat:

Zitat von HelmutP
Wie kann man denn von der BDE aus über ODBC eine Verbindung zur Datenbank aufbauen?
Vielleicht geht es ja auf diesem Weg!

ODBC-Treiber einrichten und bei TDatabase diesen ODBC-Eintrag auswählen. Ein native-Treiber (ZEOS, ODAC, ...) wird vermutlich nicht schnell möglich sein.

HelmutP 18. Okt 2005 09:13

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Zitat von Bernhard Geyer
Welche Delphi-Version hast du den (Pro/Enterprise).

Ich nutze Delphi 5 in der Enterprise Edition.

Zitat:

Zitat von Bernhard Geyer
ODBC-Treiber einrichten und bei TDatabase diesen ODBC-Eintrag auswählen.

Wie richtet man denn diesen ODBC-Treiber ein?

Bernhard Geyer 18. Okt 2005 09:39

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Zitat:

Zitat von HelmutP
Zitat:

Zitat von Bernhard Geyer
ODBC-Treiber einrichten und bei TDatabase diesen ODBC-Eintrag auswählen.

Wie richtet man denn diesen ODBC-Treiber ein?

Ist im ODBC-Administrator im Treiber-Abschnitt einen Eintrag mit Oracle (Oracle ODBC Treiber).
Falls ja ist er schon drauf und kann einfach verwendet werden.

HelmutP 19. Okt 2005 10:14

Re: Kann ein Dienst über BDE auf eine Datenbank zugreifen?
 
Ich habe den Weg über BDE -> ODBC -> Oracle probiert.

Beim Starten des Dienstes erscheint die gleiche Fehlermeldung wie ohne ODBC:
"Bei der Initialisierung der Borland Database Engine ist ein Fehler aufgetreten (Fehler $210C)"

Die Verbindung zur Datenbank wurde natürlich nicht aufgebaut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.

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