![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBO
Firebird über NTService (Dienst) zugreifen funkt nicht
Hallo Zusammen,
ich hab eine Windows Forms Anwendung geschrieben die über IBO auf eine entfernte Firebird Datenbank zugreift. Alles funktioniert einwandfrei. Nun erzeuge ich ein parallel Projekt mit exakt der gleichen Funktionalität jedoch als Dienst. Beim versuch die TIB_Connection zu öffnen bekomme ich eine Fehlermeldung: "Zugriffsverletzung bei Adresse 10013621 in Modul 'fbclient.dll'. Schreiben von Adresse 00000054" ich habe auch die richtige fbclient.dll in das Programmverzeichnis kopiert, doch ohne Erfolg. Ist da etwas spezielles zu tun wenn es sich um ein Service handelt? Alles andere funktioniert einwandfrei. Kann es sein dass ein Dienst nicht auf eine Firebird Installation auf einem anderen Rechner zugreifen kann? Gruß Kostas |
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
Du musst dem Konto unter dem der Dienst läuft Netzwerkzugriff einräumen oder den dafür definierten Benutzer NT AUTHORITY\NetworkService verwenden.
|
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
Hallo Union,
danke für die Blitz Antwort. Ich starte den Dienst über mein eingelogten user (Admin Rechte) Was genau müsste ich bitte machen? Etwa dem Dienst unter Anmeldung die Gruppe "NETZWERKDIENST" zuordnen? das habe ich soeben versucht. Der Dienst int nun angemeldet als Netzwerkdienst, funktioniert jedoch auch nicht. Die gleiche Fehlermeldung. Gruß Kostas |
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
Funktioniert es denn mit dem Service als Standalone exe? Kannst Du auf den Rechner und die DB auf anderem Wege zugreifen?
|
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
Ich habe die Applikation zuerst als normale Windows VCL-Anwendung erstellt, wobei das main Form leer ist.
Alle Elemente befinden sich auf ein Datamodul. Die Anwendung funktioniert einwandfrei. Danach habe ich ein parallel Projekt angelegt und alles aus dem Datamodul in ein NTServiceModul gepackt. Ich verwende übrigens die Komponenten SvCom( bin noch im Test damit) für die Umsetzung als Dienst. Mir ist nicht bekannt ob es möglich ist den Dienst als normale Anwendung zu starten. Jetzt wird es vermutlich schwierig oder? Gruß Kostas |
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
Du kannst das in der dpr programmieren:
Delphi-Quellcode:
begin
if ParamStr(1) = '/EXE' then begin // Das musst Du hinzufügen mit einem entsprechenden Formular aus dem Du die Aktionen aufrufst wie im Service (normalerweise in ServiceExecute. Am besten ServiceExecute besteht nur aus einer Zeile...) Forms.Application.Initialize; Forms.Application.CreateForm(TfrmDeinFormular, frmDeinFormular); Forms.Application.Run; end else begin // Das hier ist der automatisch erzeugte Block einer Dienstanwendung SvcMgr.Application.Initialize; SvcMgr.Application.CreateForm(TSrvDeinService, SrvDeinService); SvcMgr.Application.Run; end; end. |
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
ah, jetzt verstehe ich das. Die SvCom Komponenten haben das per Default drin.
Ich werde das mal gleich morgen ausprobieren. Ich habe jetzt leider noch einen Termin. Herzlichen Dank und ich melde mich morgen damit. Dir noch eine schöne Zeit. |
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
Ja, dann musst Du das entsprechend austauschen:
Delphi-Quellcode:
begin
if SvComfindCommand('EXE') then begin Forms.Application.Initialize; Forms.Application.CreateForm(TfrmDeinFormular, frmDeinFormular); Forms.Application.Run; end else begin SvCom_NTService.Application.Initialize; SvCom_NTService.Application.CreateForm(TSrvDeinService, SrvDeinService); SvCom_NTService.Application.Run; end; end. |
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
Kostas,
zusätzlich zu den Delphi-Empfehlungen ist es auch ratsam einen TCP/IP Connect-String zur Firebird Datenbank in einer Service Anwendung zu verwenden. |
AW: Firebird über NTService (Dienst) zugreifen funkt nicht
Hallo Zusammen,
hallo Thomas, schon lange nicht mehr voneinander gehört. Ich hoffe es geht dir soweit gut. Ich habe den Dienst nun als Standalone Exe laufen lassen und es funkt alles einwandfrei. Auch ein Neustart hat nicht gebraucht. Den User "NT AUTHORITY" habe ich auf mein Win7 Ultimate 64Bit nicht. Dafür konnte ich jedoch den Dienst-Anmeldung-DiesesKonto= "NETZWERKDIENST" mit dem Admin Passwort angeben. Für IBO habe ich der TIB_Connection wie immer: cn1.Server := Computername/3050 cn1.Protocol := 'cpTCP_IP' cn1.Path := 'F:\Real path zur Datenbank\Datenbank.FDB' Damit funktioniert der Dienst als Standalone Exe einwandfrei. Nur der Dienst macht Zicken mit der Fehlermeldung Zugriffsverletzung bei Adresse 10013621 in Modul 'fbclient.dll'. Schreiben von Adresse 00000054 Wie gesagt, die richtige fbclient.dll habe ich auch im Exe Verzeichnis kopiert. Übrigens, die Entwicklungsmaschine ist vistualisiert mit VMWare Workstation 9.0.2 Delphi XE2 und der Dienst laufen auf der vistualisierten Maschine Win7 Ultimate 64Bit. Firebird läuft nur auf der Host-Maschine in zwei Instanzen FB1.5 Port 3050 und FB2.5 Port 3025. Das LW F: ist eine Netzlaufwerk auf der Host-Maschine, ebenfalls Win7 Ultimate 64Bit. LW F: ist auch freigegeben für "Jeder" und zusätzlich jetzt auch für "NETZWERKDIENST". Hat leider auch nicht funktioniert. Hat jemand noch eine Idee? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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 by Thomas Breitkreuz