Comment faire pour compacter et réparer une base de données ACCESS 2007 .NET code?
J'ai besoin de compacter et réparer une Access 2007 .accdb fichier de base de données. Je sais que JRO.JetEngine pouvez faire cela avec .les fichiers mdb, mais j'ai besoin de réparation de la version la plus récente de 2007 format par code.
Des suggestions?
EDIT:
Voici la chose: j'ai trouvé que je peux utiliser l'objet COM de la bibliothèque "Microsoft Office 12 Accès au Moteur de Base de données de la Bibliothèque d'Objets" et l'utilisation de la DBEngine classe et appeler sa CompactDatabse méthode.
Mais il ne semble pas être une place pour moi à fournir le mot de passe de la base de données; Semble Office 12 Moteur de Base de données ne dispose d'aucune documentation n'importe où.
J'ai trouvé peu de documentation pour les anciennes versions de CompactDatabase méthode, mais ceux-ci ne m'aide pas du tout.
Cela me rend fou.
OriginalL'auteur TheAgent | 2009-10-10
Vous devez vous connecter pour publier un commentaire.
Pas tout à fait vrai. Il existe peu d'informations disponibles.
Sur MSDN, voir:
Access 2007 Référence Du Développeur
Il y a une branche pour Microsoft Jet d'Objets de Réplication (JRO) Référence, donc JRO (l'un des les bibliothèques comprenant ADO classique) est encore officiellement supporté (et autant que je sache, n'a encore du travail) pour l'AS par exemple le format accdb. Le Méthode CompactDatabase prend deux paramètres, qui est une chaîne de connexion OLE DB. Par conséquent, la fourniture de la base de données de mot de passe ne devrait pas être différent d'une connexion régulière à internet en utilisant par exemple
Jet OLEDB:Database Password
dans la chaîne de connexion. Rappelez-vous, pour format accdb, vous devez inclureJet OLEDB:Engine Type=5
dans la chaîne de connexion par exemplePour ce que ça vaut (pas grand-chose, il s'avère que l'), la limitation de la documentation pour l'AS du moteur est trouvé dans la L'Aide d'Office Access 2007.
Garder à l'esprit, en plus de l'Accès au Moteur de Base de données a été développée durant les années 1990, lorsque des formats propriétaires étaient à la mode; je soupçonne que la documentation a été supprimée pour des raisons commerciales, et la connaissance est tout simplement perdu. Donc, il y a beaucoup de trous dans les documents disponibles, et de gros à qui. Souvent, la seule façon de savoir comment le moteur fonctionne est de le découvrir par le biais de l'utilisation réelle. La documentation qui existe ne contient certains épouvantables erreurs: déjà aujourd'hui, j'ai posté quelques exemples sur ALORS, où potentiellement utiliser encore fictifs de la fonctionnalité (LIMITE nn LIGNES, CRÉER UNE TABLE TEMPORAIRE, etc) a été annoncé dans l'Accès de l'Aide. Caveat emptor.
vous avez besoin d'ajouter "Jet OLEDB:Type de Moteur=5" pour les chaînes de connexion. J'ai mis à jour ma réponse à couvrir ce, en utilisant le vôtre comme un exemple.
Merci. Fonctionne comme un charme.
OriginalL'auteur onedaywhen
Je sais que c'est un vieux thread, mais cela a fonctionné pour moi (pour VB.Net). J'espère que ça peut aider quelqu'un en bas de la route:
Ajouter une référence à "Microsoft Office Access 12.0 moteur de base de données de la Bibliothèque d'Objets"
http://www.tolchin.net/KB/Lists/Posts/Post.aspx?ID=9
OriginalL'auteur Jon
Juste un avis concernant JRO, il ne prend pas en charge Access version 2007 ou plus fichiers de base de données. Alors que la méthode CompactDatabase dans cette bibliothèque semble fonctionner lors de l'utilisation de l'ACE Fournisseur OLEDB, il va en fait générer une 2002-2003 (Jet 4.0) fichier de base de données.
BTW, un Type de Moteur = 5 est le Jet 4.0, ce qui devrait être un don mort que pour la version créé.
OriginalL'auteur pclement
OriginalL'auteur Wasif Majeed
Vous n'avez pas besoin de JRO. JRO ne devrait même pas exister-c'est l'un des laids, des beaux-enfants de ADODB qui venait de Microsoft erronée tentative de remplacer Access/Jet/ACE natif de DAO avec ADO, un non-natif de la couche d'abstraction. JRO est là pour offrir du soutien pour le Jet d'une fonctionnalité non disponible dans ADODB.
Si vous avez utilisé DAO au lieu de cela, vous auriez toutes les fonctionnalités de droit qui existe déjà, et ça marche pour tous les formats pris en charge par la version d'Access que vous utilisez (depuis le DAO version est synchronisé avec votre version d'Accès, qui est, lorsque le moteur de base est amélioré, il y a une nouvelle version de DAO pour aller avec elle).
Donc, dans A2007, vous souhaitez simplement utiliser le DAO compact méthodes (il n'y a pas eu d'opération de réparation comme une commande séparée depuis Access 2, et que les réparations ne se produit que si le moteur de base de données détermine au cours de la compacte qu'une réparation est nécessaire). Si vous travaillez à partir d'Accès à l'extérieur, alors vous devez utiliser l'ACE compatible avec la version de DAO. Si vous n'avez pas A2007 installé et que vous avez installé le ACE de manière indépendante, vous avez la version de DAO installé avec elle.
Droit, DAO 3.6 est pour Jet 4. Vous voulez la version pour l'ACE, qui s'affiche dans la MME IDE de références comme Microsoft Office Access 12.0 Moteur de Base de données de la Bibliothèque d'Objets, et la DLL est ACEDAO.DLL.
OriginalL'auteur David-W-Fenton