L'accès “Compacter et Réparer” par programmation
Est-il possible de "compacter et réparer" un Accès de base de données par programmation en quelque sorte (à l'aide d'ADOX, à l'aide de OleDbConnection etc.)?
- DAO pas bon pour vous? J'ai quelques VBScript à la main qui utilise DAO.
- n'hésitez pas à poster le script ici ....
- C'est un vieux post, mais un premier coup pour moi sur Google. Je viens d'apprendre qu'une base de données ne peut pas être compacté et réparé au lieu de cela, il doit être réglé à compacter lors de la fermeture. Voir ce Débordement de Pile post sur le sujet.
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas assez de rep pour répondre à un précédent "réponse", mais j'ai voulu donner quelques infos qui pourraient être utiles à quelqu'un d'autre en ce qui concerne l'OP question.
J'ai été en utilisant le JRO méthode pour les années à compact/réparation de mes bases de données Access 2000 de VB.net. Chaque fois dans une lune bleue, j'ai un client qui a réussi à corrompre une base de données (généralement lorsqu'il est connecté à la base de données sur un réseau, et ils souffrent d'une inattendue interruption du réseau). JRO (dans mon expérience), fonctionne très bien, aussi longtemps que la base de données n'EST PAS ENDOMMAGÉ. Je n'ai jamais pu comprendre pourquoi la base de données POURRAIT être réparé si j'ai utilisé l'application d'Accès pour le faire, mais lorsque j'utilise MON application (qui utilise JRO), le compact/réparation serait toujours en échec (base de données est dans un format non reconnu).
Donc, après de venir à travers ce fil, juste une heure, j'ai abandonné une référence à DAO dans mon application et mise à l'épreuve sa capacité à réparer une base de données corrompue, parce que j'ai aujourd'hui eu un client corrompu leur base de données (troisième fois de son arrivé dans environ 8 ans). Devinez quoi, DAO a été en mesure de réparer la base de données lorsque JRO a échoué!
OK, donc c'est mon expérience avec JRO vs DAO. Espérons que cela aide. Voici un exemple de code pour l'utilisation de
CompactDatabase
de DAO:il'possible compacter et réparer une base de données MS ACCESS de deux façons:
RepairDatabase()
, tandis que dans DAO360 il y aCompactDatabase()
Comme un exemple, en VB6 (vieux, vieux, vieux...) ce faire:
Comme vous le remarquerez, la fonction nécessite de spécifier le nom de la db, afin d'être réparé et le nom de la base de données réparée.
Il est à seulement quatre lignes de code dans c#.net
De la première utilisation d'une bibliothèque:
Vous souhaitez compacter et réparer
test.mdb
avec le code suivant:Ainsi
test.mdb
seront compactés et réparé et un nouveau fichiertest1.mdb
sera créé. Ensuite vous avez juste à supprimertest.mdb
et renommertest1.mdb
àtest.mdb
.Exemple de code VBScript.
"True"
il alors il serait mieux de l'utiliser commetrue
, je crois que le booléen une affectation de travail, même si vous ne pouvez pas le type de l'objet fortement.boolErr = true
Cette solution fonctionne avec le Moteur de Base de données Access 2010:
Référence:
Code:
(Le sourceFilePath et destFilePath ne doit pas être le même!)
CompactDatabase paramètres de la méthode (de réflexion):
Assurez vous de le faire en vertu de la même plate-forme que la AccessDatabaseEngine (ou Bureau) que vous avez installé (x86/x64).
Ici est l'agent de liaison de commande, tout commentaire serait superflu.
DBEngine.Méthode CompactDatabase