Wie kann ich komprimieren und reparieren einer ACCESS 2007-Datenbank .NET-code?
Muss ich komprimieren und reparieren einer Access 2007 .accdb-Datenbank-Datei. Ich weiß, dass JRO.JetEngine, kann dies mit .mdb-Dateien, aber ich brauche zur Reparatur der neueren version 2007-format von code.
Irgendwelche Vorschläge?
EDIT:
Hier ist die Sache: ich fand, dass ich das COM object library "Microsoft Office 12 Access Database Engine Object Library" und verwenden Sie die DBEngine-Klasse, und rufen Sie seine CompactDatabse Methode.
Aber es scheint nicht zu sein, einen Platz für mich geben Sie das Datenbankkennwort; Scheint, wie Office 12 Database Engine keine Dokumentation überall.
Ich fand einige Unterlagen, die für ältere Versionen von CompactDatabase-Methode, aber diejenigen, die nicht helfen, mich überhaupt.
Dieser macht mich verrückt.
InformationsquelleAutor TheAgent | 2009-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht ganz richtig. Es gibt nur begrenzte Informationen zur Verfügung.
Auf MSDN finden Sie unter:
Access 2007 Developer Reference
Gibt es einen Zweig für Microsoft Jet Replication Objects (JRO) - Referenz, so JRO (einer der Bibliotheken, bestehend ADO classic) ist immer noch offiziell unterstützt wird (und AFAIK funktioniert immer noch) für ACE-z.B. das accdb-format. Die CompactDatabase-Methode nimmt zwei Parameter, die beide eine OLE DB-Verbindungszeichenfolge. Daher liefert das Datenbank Passwort sollte nicht anders sein als eine normale Verbindung z.B. mit
Jet OLEDB:Database Password
in der Verbindungszeichenfolge. Denken Sie daran, für accdb-format Sie brauchen, umJet OLEDB:Engine Type=5
in der Verbindungszeichenfolge z.B.Für was es Wert ist (nicht viel, wie sich herausstellt), durch die eingeschränkte Dokumentation für die ACE-engine ist in der Der Office-Hilfe nach Access 2007.
Bedenken Sie, die meisten Access-Datenbank-Engine entwickelt wurde, die während der 1990er Jahre, als bei proprietären Formate waren der Letzte Schrei; ich vermute Dokumentation unterdrückt wurde, aus wirtschaftlichen Gründen und das wissen ist einfach verloren. Es gibt also viele Löcher in den derzeit verfügbaren Dokumentationen und große an. Oftmals der einzige Weg, um herauszufinden, wie die engine funktioniert, ist zu entdecken, dass es durch die tatsächliche Nutzung. Die Dokumentation, das existiert, enthält einige erschreckende Fehler: bereits heute habe ich geschrieben ein paar Beispiele, ALSO wo potenziell noch fiktiven-Funktionalität (LIMIT TO nn ROWS, ERSTELLEN SIE DIE TEMPORÄRE TABELLE, etc) geworben worden, die in der Access-Hilfe. Caveat emptor.
Sie müssen hinzufügen 'Jet OLEDB:Engine Type=5' die connection strings. Ich habe aktualisiert mein Antwort zu dieser, mit dir, so ein Beispiel.
Danke. Funktioniert wie ein Charme.
InformationsquelleAutor onedaywhen
Ich weiß, dies ist ein Alter thread, aber das war für mich (für VB.Net). Hoffentlich kann jemand helfen, die Straße hinunter:
Fügen Sie einen Verweis auf "Microsoft Office 12.0 Access database engine Objekt Library"
http://www.tolchin.net/KB/Lists/Posts/Post.aspx?ID=9
InformationsquelleAutor Jon
Nur ein FYI Bezug auf JRO, es keine Unterstützung für Access-version 2007 oder höher Datenbank-Dateien. Während die CompactDatabase-Methode in dieser Bibliothek scheint zu funktionieren, wenn mit dem ACE OLEDB-Provider, es wird in der Tat erzeugen ein 2002-2003 (Jet 4.0) - Datenbank-Datei.
BTW, eine Engine Type = 5 ist Jet 4.0, so dass sollte ein Totes Werbegeschenk wie version erstellt.
InformationsquelleAutor pclement
InformationsquelleAutor Wasif Majeed
Brauchen Sie nicht JRO. JRO gar nicht geben dürfte-es ist eine der hässlichen Stiefkinder von ADODB, die zustande kam, weil die von Microsoft ist fehlgeleiteter Versuch zu ersetzen, die Access/Jet/ACE, native DAO ADO, eine nicht-native-Abstraktions-Schicht. JRO ist es, um Unterstützung für die Jet-spezifischen Funktionen nicht verfügbar in der ADODB.
Wenn du DAO statt, Sie haben alle Funktionen, die genau dort bereits, und es funktioniert für alle Formate von der version von Access, die Sie verwenden (da die DAO-version synchronisiert mit Ihrer Access-version, das heißt, wenn die db-engine ist verbessert, es gibt eine neue version von DAO mit ihm zu gehen).
So, in A2007, Sie würde einfach die DAO compact Methoden (es gab keine Reparatur-operation als separaten Befehl, da der Zugang 2, und eine Reparatur erfolgt nur, wenn die Datenbank-engine bestimmt, während die kompakt sind, dass eine Reparatur notwendig ist). Wenn Sie von außerhalb Zugreifen, dann müssen Sie nur noch den ACE-kompatible version von DAO. Wenn Sie nicht über A2007 installiert ist, und installiert das ass unabhängig, Sie haben die version von DAO installiert zusammen mit ihm.
Recht, DAO 3.6 ist für Jet 4. Möchten Sie die version für das ACE, das zeigt sich in der MS - IDE-Verweise Microsoft Office 12.0 Access Database Engine Object Library, und die DLL ist ACEDAO.DLL.
InformationsquelleAutor David-W-Fenton