none
Connection von VS 2010 Pro C# Windows program zu localer Access-Datenbank 2010 RRS feed

  • Frage

  • Windows 7 Ult.(64bit), ACCESS (32 bit).
    Ich habe AccessDatabaseEngine.exe (4.10.2010) installiert.
    Verweis hinzugefügt: COM Microsoft Access 14.0 Object library
    (x86 MSACC.OLB)

    using System.Data.OleDb;
    string ConString = "Provider= Microsoft.ACE.OLEDB.12.0; DataSource=Database311.accdb; Trusted_Connection=Yes;"; (auch mit OLEDB.14.0 versucht)
    OleDbConnection con = new OleDbConnection(ConString);
    Hier Fehler bei con ServerVersion:
    "ServerVersion hat Ausnahme vom Typ SystemInvalidOperationException verursacht."
    Was mache ich falsch?
    Wer kann mir bitte helfen?
    Gruß
    Klaus
    Mittwoch, 6. Oktober 2010 16:00

Antworten

  • Hallo Klaus,

    Deine Frage wäre besser im .NET Framework Forum aufgehoben.

    Wenn Du unter x64 (64-Bit) arbeitest, solltest Du die 64-Bit Treiber installieren,
    des Microsoft Access Database Engine 2010 Redistributable
    denn ansonsten muß das Programm als x86 (32-Bit) kompiliert werden,
    damit es die 32-Bit Treiber verwendet.

    Zur Verbindungszeichenfolge:
    Trusted_Connection ist kein Schlüsselwort für den Jet Treiber,
    sondern wird nur vom SQL Server Treiber erkannt.

    Die Verbindungszeichenfolge sollte lauten:

    string ConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source=<Laufwerk>:\<Verzeichnis>\Database311.accdb;";
    wobei Du <Laufwerk>:\<Verzeichnis> durch die Pfadangabe zur Datenbank ersetzen mußt.
    Als weiteren Hinweis:
    Datendateien haben unter Windows 7 nichts im Programmverzeichnis verloren,
    denn dort hat ein normaler Anwender keinen Zugriff.

    Weitere Varianten findest Du unter: http://connectionstrings.com/access-2007

    Die auf der deutschen Downloadseite angegebene Providerangabe ist falsch!
    Siehe The Microsoft.ACE.OLEDB.14.0 provider is not registered on the local machine.
    (und der Fix auf der Downloadseite ist nur für die englischen Seite erfolgt)

    Gruß Elmar

    Donnerstag, 7. Oktober 2010 08:43
    Beantworter

Alle Antworten

  • Hallo Klaus obu,

    das hier könnte dir weiterhelfen:

    http://msdn.microsoft.com/de-de/library/fd85b3df(VS.80).aspx


    Please 'Mark as Answer' if I helped. This helps others who have the same problem!
    Donnerstag, 7. Oktober 2010 08:15
  • Hallo Klaus,

    Deine Frage wäre besser im .NET Framework Forum aufgehoben.

    Wenn Du unter x64 (64-Bit) arbeitest, solltest Du die 64-Bit Treiber installieren,
    des Microsoft Access Database Engine 2010 Redistributable
    denn ansonsten muß das Programm als x86 (32-Bit) kompiliert werden,
    damit es die 32-Bit Treiber verwendet.

    Zur Verbindungszeichenfolge:
    Trusted_Connection ist kein Schlüsselwort für den Jet Treiber,
    sondern wird nur vom SQL Server Treiber erkannt.

    Die Verbindungszeichenfolge sollte lauten:

    string ConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source=<Laufwerk>:\<Verzeichnis>\Database311.accdb;";
    wobei Du <Laufwerk>:\<Verzeichnis> durch die Pfadangabe zur Datenbank ersetzen mußt.
    Als weiteren Hinweis:
    Datendateien haben unter Windows 7 nichts im Programmverzeichnis verloren,
    denn dort hat ein normaler Anwender keinen Zugriff.

    Weitere Varianten findest Du unter: http://connectionstrings.com/access-2007

    Die auf der deutschen Downloadseite angegebene Providerangabe ist falsch!
    Siehe The Microsoft.ACE.OLEDB.14.0 provider is not registered on the local machine.
    (und der Fix auf der Downloadseite ist nur für die englischen Seite erfolgt)

    Gruß Elmar

    Donnerstag, 7. Oktober 2010 08:43
    Beantworter
  • Hallo Klaus,

    Deine Frage wäre besser im .NET Framework Forum aufgehoben.

    Wenn Du unter x64 (64-Bit) arbeitest, solltest Du die 64-Bit Treiber installieren,
    des Microsoft Access Database Engine 2010 Redistributable
    denn ansonsten muß das Programm als x86 (32-Bit) kompiliert werden,
    damit es die 32-Bit Treiber verwendet.

    Zur Verbindungszeichenfolge:
    Trusted_Connection ist kein Schlüsselwort für den Jet Treiber,
    sondern wird nur vom SQL Server Treiber erkannt.

    Die Verbindungszeichenfolge sollte lauten:

     

    string ConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source=<Laufwerk>:\<Verzeichnis>\Database311.accdb;";
    
    
    wobei Du <Laufwerk>:\<Verzeichnis> durch die Pfadangabe zur Datenbank ersetzen mußt.
    Als weiteren Hinweis:
    Datendateien haben unter Windows 7 nichts im Programmverzeichnis verloren,
    denn dort hat ein normaler Anwender keinen Zugriff.

    Weitere Varianten findest Du unter: http://connectionstrings.com/access-2007

    Die auf der deutschen Downloadseite angegebene Providerangabe ist falsch!
    Siehe The Microsoft.ACE.OLEDB.14.0 provider is not registered on the local machine.
    (und der Fix auf der Downloadseite ist nur für die englischen Seite erfolgt)

     

    Gruß Elmar


    Hallo Elmar,
    vielen Dank für Deine Antwort.

    Ich hatte die Zielplattform bereits auf x86 eingestellt.

    Die 64-Bit Treiber der Microsoft Access Database Engine 2010 Redistributable
    zu installieren bedeutet, dass ich vorher Office (32) durch Office (64) ersetzen muss.
    "You cannot install the 64 bit version of Microsoft Access DataBase Engine 2010 because
    you currently have 32 bit Office products installed."

    Den Umstieg auf Office(64) habe ich bisher nicht gewagt, weil ich dann noch mehr Trouble
    befürchte. Oder hälst Du das für eine gute Idee?

    Gruß
    Klaus

    Donnerstag, 7. Oktober 2010 10:49
  • Hallo Klaus,

    ich würde Office 2010 mit 32-Bit bevorzugen, zumindest wenn Erweiterungen (wie VBA Code etc.)
    genutzt werden (könnten). Denn auch Microsoft empfiehlt deswegen derzeit die 32-Bit Version,
    siehe 64-bit editions of Office 2010 ff. und
    Kompatibilität zwischen der 32-Bit-Version und der 64-Bit-Version von Office 2010

    .vb, .cs, .cpp, .nu, .fs { display: none; } .nu { display: inline; }

    Weitere Vorteile bietet der 64-Bit Access Treiber nicht, nur eine Ausführung unter nativem x64.

    Wenn Du Deine Anwendung als x86 kompiliert hast, sollte der Zugriff funktionieren.
    Zum Testen solltest Du die Datenbank unter Access 2010 öffnen,
    um sicher zu gehen, dass sie nicht beschädigt wurde.

    Gruß Elmar

    Donnerstag, 7. Oktober 2010 11:40
    Beantworter
  • Hallo Klaus,

    ich würde Office 2010 mit 32-Bit bevorzugen, zumindest wenn Erweiterungen (wie VBA Code etc.)
    genutzt werden (könnten). Denn auch Microsoft empfiehlt deswegen derzeit die 32-Bit Version,
    siehe 64-bit editions of Office 2010 ff. und
    Kompatibilität zwischen der 32-Bit-Version und der 64-Bit-Version von Office 2010

    .vb, .cs, .cpp, .nu, .fs { display: none; } .nu { display: inline; }

    Weitere Vorteile bietet der 64-Bit Access Treiber nicht, nur eine Ausführung unter nativem x64.

    Wenn Du Deine Anwendung als x86 kompiliert hast, sollte der Zugriff funktionieren.
    Zum Testen solltest Du die Datenbank unter Access 2010 öffnen,
    um sicher zu gehen, dass sie nicht beschädigt wurde.

    Gruß Elmar

    Hallo Elmar,

    Dein Rat bestärkt mich, bei Office (32 bit) zu bleiben.

    Ich habe alternativ versucht, in der VS-Umgebung die Datenbank als neue Datenquelle zu laden.
    Alles funktioniert, Testverbindung o.k. Der Inhalt der Datenbank wird gezeigt. 
    Dann stürzt VS ab und beim Wiederstart von VS ist die Datenquelle im Programm gelöscht.

    Ich lasse jetzt erst mal die Finger von Access, denn ohne Zusammenspiel mit VS ist Access für mich wertlos.

    Vielen Dank für Deine Mühe
    Klaus

    Donnerstag, 7. Oktober 2010 12:54