none
Verbindungsaufbau OleDB RRS feed

  • Frage

  • Liebe Community,

    ich versuche eine Verbindung zu einer mdb aufzubauen.

    string connectionString2 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\*****\*****\*****_viewer.mdb; Password=******;";           

    OleDbConnection con2 = new OleDbConnection(connectionString2);           

    con2.Open();

    Die DB ist Passwortgeschützt, welches ich aber mitgebe.

    Der Debugger gibt mir einen Fehler aus:

    Server Version: ServerVersion = "con2.ServerVersion" hat eine Ausnahme vom Typ "System.InvalidOperationException" verursacht.

    Wenn ich eine Verbindung über den Server-Explorer aufbaue und Teste funktioniert diese.

    Kann mir jemand weiterhelfen?

    Liebe Grüße

    ziggy


    • Bearbeitet ziggyyy Dienstag, 19. März 2013 14:41
    Dienstag, 19. März 2013 14:31

Antworten

  • Hallo Manuel,

    je nach Einstellung im IIS kann es sein, dass Du eben nicht auf den UNC Pfad zugreifen kannst. Wenn Du bspw. den Application Pool als NETZWERKDIENST ausführen lässt und die Freigabe, in der die mdb liegt, "Jeder" (bzw. "Everyone") als Zugriff eingerichtet hat, wird es nicht gehen, da "Jeder" eben nicht jeder ist. Siehe dazu:

      http://weaselfire.wordpress.com/2009/07/09/everyone-isnt-everyone/

    Bei Access Datenbanken hat man dazu mit der Angewohnheit zu kämpfen, dass konkurrierende Zugriffe bspw. aus einem WinForms Client oder direkt per Access und der gleichzeitige Zugriff aus ASP oder ASP.NET nicht funktioniert.

    Alles in allem solltest Du demjenigen, der die Nutzung der "mdb" vorgibt, dringend ans Herz legen, auf einen SQL Server auszuweichen. Wenn es darum geht, dass es ein Access Frontend gibt, mit dem man arbeiten muss, kann man das auch upgraden. Also Access als Frontend verwenden, der Zugriff geht aber auf eine SQL Server Datenbank.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert ziggyyy Mittwoch, 20. März 2013 12:24
    Mittwoch, 20. März 2013 09:58
    Moderator

Alle Antworten

  • bei String:
     Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\*****\****\***_viewer.mdb; JET OLEDB:Database Password=******;
    der gleiche Fehler.
    Dienstag, 19. März 2013 15:00
  • Hi,
    die Jet gibt es nur für 32 Bit. Hast Du das berücksichtigt und Dein Projekt auch nur für X86 zugelassen?
     
    --
    Peter Fleischer
    Dienstag, 19. März 2013 15:45
  • Hey,

    danke für die Antwort. Nein habe ich nicht beachtet.
    Wenn ich die Verbindung über den Serer-Explorer anlege und teste funktioniert diese. Ebenfalls gibt er mir die Zeichenverbindungsfolge "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\hajas211adis\telis_viewer\telis_viewer.mdb" als String aus. Also nutzt das "tool" ja ebenfalls die Jet. Ich vermute ich kann also ausschließen, dass es an der bitversion liegt.

    LG

    ziggy


    • Bearbeitet ziggyyy Dienstag, 19. März 2013 16:01
    Dienstag, 19. März 2013 16:01
  • Hi,
    das Studio wird aus dem Program Files(86) geladen.
     
    --
    Peter Fleischer
    Dienstag, 19. März 2013 16:43
  • der Stacktrace gibt folgendes aus:

     bei System.Data.ProviderBase.DbConnectionClosed.get_ServerVersion()
     bei System.Data.OleDb.OleDbConnection.get_ServerVersion()

    falls das relevant ist.

    Was ich nicht verstehe, warum funktioniert die Verbindung über den Server-Explorer, aber nicht wenn ich es reincodiere? 

    Ich habe ehrlich gesagt keine Ahnung wie man ein Projekt f+r x86 freigibt. Gibt es denn andere Möglichkeiten, die ich nutzen könnte?

    LG

    Ziggy

    Dienstag, 19. März 2013 16:54
  • Hi,

    kannst Du die MDB mal bitte testweise in einen lokalen Ordner kopieren? Also bspw. C:\Ordner\... Dann bitte mal damit probieren. Falls es damit funktioniert, welche Art von Anwendung erstellst Du da? WinForms? Dienst? ASP.NET? ...?

    Um deine Anwendung auf x86 umzustellen, gehst Du in:

    Projekt
     -> Eigenschaften
       -> Reiter "Erstellen"
         -> Zielplattform -> "x86"


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 19. März 2013 19:38
    Moderator
  • Es ist eine asp.net Webseite. Ich benötige aus der Tabelle eine Nummer, da ein Ticketsystem ein paar Einträge referenzieren kann.

    Ich habe die db lokal auf dem Rechner, habe es mal damit versucht. Damit tritt der selbe Fehler auf (base {System.SystemException} = {"Ungültige Operation. Die Verbindung ist geschlossen."}). Es gibt eine Anwendung die darauf zugreift, kann es sein dass nur diese Anwendung das Recht hat dort auszulesen?

    Ich habe die DB nicht erstellt, muss nur leider damit arbeiten. Welcher normale Mensch macht auch noch was mit einer AccessDB... >.<.

    LG

    Manuel


    • Bearbeitet ziggyyy Mittwoch, 20. März 2013 08:24
    Mittwoch, 20. März 2013 08:21
  • Hallo Manuel,

    je nach Einstellung im IIS kann es sein, dass Du eben nicht auf den UNC Pfad zugreifen kannst. Wenn Du bspw. den Application Pool als NETZWERKDIENST ausführen lässt und die Freigabe, in der die mdb liegt, "Jeder" (bzw. "Everyone") als Zugriff eingerichtet hat, wird es nicht gehen, da "Jeder" eben nicht jeder ist. Siehe dazu:

      http://weaselfire.wordpress.com/2009/07/09/everyone-isnt-everyone/

    Bei Access Datenbanken hat man dazu mit der Angewohnheit zu kämpfen, dass konkurrierende Zugriffe bspw. aus einem WinForms Client oder direkt per Access und der gleichzeitige Zugriff aus ASP oder ASP.NET nicht funktioniert.

    Alles in allem solltest Du demjenigen, der die Nutzung der "mdb" vorgibt, dringend ans Herz legen, auf einen SQL Server auszuweichen. Wenn es darum geht, dass es ein Access Frontend gibt, mit dem man arbeiten muss, kann man das auch upgraden. Also Access als Frontend verwenden, der Zugriff geht aber auf eine SQL Server Datenbank.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert ziggyyy Mittwoch, 20. März 2013 12:24
    Mittwoch, 20. März 2013 09:58
    Moderator
  • Die zuständige Person wir die Datenbank in den nächsten 4-5 Wochen auf eine MySQL umziehen.

    Danke für deine Hilfe!
    Mittwoch, 20. März 2013 12:23