Dienst mit Oracle Klasse

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightsource.

    Dienst mit Oracle Klasse

    Ich hatte einen Dienst programmiert der ein Verzeichnis überwacht und bei
    Ankunft eines neuen Files die darin enthaltenen Daten konvertiert in eine Oracle-Datenbank
    schreibt. Nun soll der Dienst von einem 32Bit Server auf einen 64Bit Server umziehen.
    Leider funktionierte das nicht. Ich hatte übrigens AnyCPU eingeschaltet.

    Wir haben den ODBC-Treiber für Oracle im Verdacht. Darum habe ich den Dienst
    neu programmiert und habe nun die originale Oracle-Klasse (also nicht ODBC) verwendet.
    Ich konnte zwar mit installutil.exe den Dienst in meinen Entwicklungsrechner
    integrieren, jedoch läuft er nicht an.

    Ich bekomme eine Timeout Meldung beim Starten des Dienstes.
    Anscheinend kommt der Progammablauf noch nicht mal bis zur
    OnStart Routine.

    Hat jemand Ideen an was es liegen könnte. Wie soll ich z.B. etwas
    debuggen, was erst gar nicht startet?
    So, nach einigen Recherchen und Tests habe ich Folgendes heraus gefunden.
    Es gibt für die verschiedenen Frameworks auch verschiedene Installutil.exe.
    Weiterhin habe ich den ConnectionString anpassen müssen. Da weiß ich zwar
    nicht so recht warum, aber immerhin läuft der Dienst jetzt, zumindest auf meinem
    PC. Morgen wird er auf dem Server getestet.
    Auf dem Server hat es nun doch nicht geklappt. Wir dachten erst, wir würde ein Update
    der ODP.Net benötigen. Aber auch das hat uns nicht weiter gebracht.

    Da ein Debuggen, ohne Installation von VisualStudio auf dem Server, wohl nicht möglich ist,
    bin ich nun dabei einzelne Teile des Programms aus zu kommentieren. Im Moment kommt
    das Programm bis zu diesem Punkt.

    VB.NET-Quellcode

    1. Public DatenVerbindung As New Dictionary(Of Integer, Oracle.DataAccess.Client.OracleConnection)


    Hier fülle ich ein Dictionary mit einzelnen Connections, die ich später über einen Index ansprechen will.
    Ich weiß zur Entwicklungszeit noch nicht, wieviele verschiedene Connections ich später benötige.

    Meine Frage nun: Gibt es eine sinnvolle Alternative zu dem Dictionary?
    kann mir nicht vorstellen, dass ein Dictionary da fürne Fehlfunktion sorgt. Tatsächlich kann ich mir nichtmal vorstellen, warum man ühaupt mehrere Connections brauchen sollte, um auf dieselbe DB zuzugreifen.

    Ich weiß auch nicht, was die "Original-Oracle-Klasse" ist im Gegensatz zu ODBC, und das mit den verschiedenen InstallUtils habich auch nicht kapiert - das war ja zum Glück nicht die aktuelle Frage.

    Statt eines Dictionary(Of int, Connection) kann man sicher auch eine List(Of Connection) verwenden - u.U. sogar ein simples Array. Da kann man dann auch durch Angabe eines Int-Indexes eine Connection abrufen.
    Aber wie gesagt: an Dictionary/List/Array wirds nicht liegen - eher an den Connections selbst, oder falls sie falsch genutzt werden, oder was ganz anneres.

    Mir sieht die ganze Geschichte so aus, als müsse man das System in einer VirtualMashine nachbauen, und auf dem Server dann vernünftig debuggen - aber ist natürlich ein Mords-Act. Oder sonstwie eine gscheite Debug-Möglichkeit muß her.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Ich weiß auch nicht, was die "Original-Oracle-Klasse" ist im Gegensatz zu ODBC, und das mit den verschiedenen InstallUtils habich auch nicht kapiert - das war ja zum Glück nicht die aktuelle Frage.



    Immerhin das weiß ich jetzt:
    ODP.NET

    Schau mal auf deinem PC in:
    C:\WINDOWS\Microsoft.NET\Framework
    Dort sind die ganzen Ordner der versch. Versionen. Und darin jeweils ein InstallUtil, das dann verwendet wird um
    einen Dienst auf einem PC zu installieren/registrieren.

    .....

    ühaupt mehrere Connections brauchen sollte, um auf dieselbe DB zuzugreifen.


    Weil es vorkommen kann, dass teilweise auf einem TestServer und teilweise auf einem ProduktivServer gearbeitet wird.
    Darum lege ich mir die versch. Connections vorher schon mal zurecht, um später über den Index darauf zugreifen zu können.

    Mein Verdacht geht auch eher in die Richtung, dass beim Erschaffen der Objekte der Fehler passiert.
    Möglicherweise handelt es sich jaum ein Rechteproblem.