Question

Nous avons un système basé sur MS Access qui repose sur des données dorsaux stockées dans la base de données en réseau MS Access. Parfois, ces bases de données sont endommagés lorsque surviennent des problèmes aléatoires en réseau. Nous avons donc pensé que nous devrions ajouter une sorte de processus qui peut déclencher systématiquement un appareil compact et réparation.

Le problème est que cette base de données est utilisée tout le temps par plusieurs utilisateurs, et il n'y a aucune garantie de savoir qu'un certain temps sera disponible lorsque la base de données n'est pas utilisé. Donc, ma question (s) sont les suivantes.

1) Si la base de données est c / r'ed quand essaie de se connecter à lui, ce qui se passera une application-frontal (MS Access ou .NET)? Est-ce ok?

2) Que recommande SO comme une bonne solution pour rendre la fin de l'avant applications tout attendre jusqu'à ce que le back-end base de données MS Access est prêt à l'emploi? Les moins de changements nécessaires à la fin de l'avant apps mieux.

Merci!

Était-ce utile?

La solution

Ceci est une question fréquemment posée relativement parmi les développeurs d'accès.

Il y a deux parties il:

  1. le code de sauvegarde et de compacter la base de données, que vous souhaitez programmer sur le serveur.

  2. le code que vous mettez dans votre extrémité avant tout le monde de se connecter automatiquement à un moment qui permet le code # 1 à courir.

En général, un bureau est ouvert uniquement, disons, de 8 h à 6pm heure locale, il est donc généralement sans danger pour donner le coup tout le monde autour de minuit pour que l'extrémité arrière est disponible pour la sauvegarde et le compactage à, disons, 1h du matin, en préparation votre sauvegarde régulière du serveur de fichiers qui peut se produire, par exemple, à 2h du matin.

A VBScript pour la sauvegarde / compact est relativement facile à écrire. Si vous avez besoin d'aide avec cela, demandez.

Pour la fin de l'avant, vous aurez besoin d'avoir une forme cachée qui s'ouvre lorsque l'application est ouverte avec une minuterie sur ce qui est mis à coup à minuit et fermez l'application. Comment voulez-vous élaborer obtenir avec cela dépend. pièges potentiels seraient si un utilisateur a commencé un enregistrement et il est dans un état qui ne peut pas être sauvé (échec de la validation des règles pour une raison quelconque). Cela peut être compliqué (vous auriez à piéger l'erreur, annuler l'enregistrement de la souche et alors vous pourriez arrêter), mais il est préférable de concevoir vos applications afin que les utilisateurs ne peuvent pas toujours créer des enregistrements qui ne peuvent pas être sauvegardés.

Le point clé est que vous devez planifier les deux extrémités de cela, la programmation et la fermeture des connexions qui restent au moment où votre sauvegarde / compact est planifiée.

Autres conseils

D'après ce que je comprends, ayant compacter automatiquement la base de données est une mauvaise idée. S'il y avait une erreur récupérable avant de compacter, vous pourriez vous retrouver avec une base de données complètement illisible après - nécessitant une restauration à partir de sauvegardes.

1> Si les essais de fin avant d'accéder à une base de données qui est en cours de compactage / réparé, je crois que le client front-end est dit la base de données est disponible et est éjecté sans ménagement. Je crois que vous pouvez écrire un gestionnaire d'erreurs pour cela, mais qui nécessite plus de connaissances VBA que je offre.

2> Si possible, face à des clients multiples - un SGBDR sur le back-end sera toujours mieux performer, même si elle est Microsoft SQL Server Express sur une boîte de Windows de rechange. Les données va avoir une meilleure chance de ne pas être corrompu quand « mauvaises choses » se produisent (déconnexions réseau, verrouillages client, etc.). Un SGBDR avec des transactions est généralement une bonne voie pour cela.

En ce qui concerne une solution à cela, je crains que je suis à court d'idées par programme. Désolé.

Le livre de Garry Robinson à propos de l'accès de sécurité traite de cette question. Il vaut bien une lecture. Sur le site Web de Garry (vb123.com) il vend une boîte à outils avec un certain nombre d'outils d'administration et de sécurité inclus, y compris celui qui donne à chaque poste de travail connecté un avertissement, puis il arrête l'avant x secondes plus tard.

Le livre est:

monde réel Microsoft Access Database Protection et sécurité

Si vous travaillez avec Access dans un environnement d'entreprise, il est un must have et lire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top