Question

Je suis actuellement sur une équipe de 4 personnes chargée du développement et de la maintenance d'un héritage application MS Access.

L'application est assez grande, avec des centaines de formulaires, des rapports, des requêtes et des tables.

À l'heure actuelle, nous avons l'avant divisé en environ 7 composants mde, dont chacun est essentiellement une application dans son propre droit, reliées par une extrémité avant commune qui est essentiellement juste une interface graphique de menu.

Nous utilisons des tables liées pour relier cette extrémité avant à une extrémité MS Access en arrière, à l'aide OpenDatabase (C: \ access.mdb) appelle dans le code lui-même. Cette application a été autour pendant un certain temps, et utilise ainsi DAO pour se connecter à un back-end Access 97.

Cela signifie que chaque utilisateur de l'application a sa propre copie locale de la base de données pour faire des changements. Nous avons un environnement de changement soigneusement contrôlé qui assure qu'une seule personne peut travailler sur les données à un moment donné, ils doivent valider toutes les modifications avant de passer la base de données maître à la personne suivante.

Cet environnement de contrôle des changements est étouffait pour le moins, et bientôt nous aurons besoin de plus de changements de données à effectuer dans un délai qui rend l'accès utilisateur unique non viable.

Alors, nous devons passer à un accès multi-utilisateurs, mais par plusieurs utilisateurs, je veux dire seulement environ 4 personnes. Ce peuple ne sont probablement pas physiquement situés dans le même bureau, donc une certaine forme de connexion db à distance est nécessaire.

L'ensemble de l'application est susceptible d'être retravaillé dans un an ou deux de temps, se déplaçant à l'avant et à la fin reculez de MS Access. Cependant, nous avons besoin d'un accès multi-utilisateurs dès que possible.

Alors, quel est le chemin le plus rapide pour multiutilisateur bonheur?

Suggestions que nous examinons comprennent:

  • Mise en place d'un réseau privé virtuel de sorte que MS Access estime qu'il accède à un lecteur réseau régulier. Cela ressemble à ce sera lent et je ne suis pas sûr si un VPN est assez fiable, mais il est juste une solution temporaire, nous sommes après de toute façon.
  • Conversion du backend mdb en quelque chose destiné à l'utilisation à distance multi-utilisateur, comme SQL Server. Nous ne savons pas comment le faire rapidement et facilement (nous nous appuyons sur des règles de validation sur le terrain par exemple) Nous aussi sans doute pour la conversion en format MS Access autres applications acceptent les mêmes fichiers .mdb en entrée de données.
  • Juste au sujet de tout ce qui peut être effectué par 1 ou 2 personnes dans quelques mois.

EDIT:. En réponse aux commentaires ci-dessous

Les données qui sont traitées par l'application est très sécurité des données critiques. Il change rarement, et doit être validé pour montrer qu'il n'y a pas d'erreurs logiques avant d'être exporté. En réalité, les données sont soumises à des restrictions plus lourdes que l'application elle-même!

Les données sont liés entre eux de manière non triviale. En tant que tel, un changement à un enregistrement d'une table peut invalider un enregistrement dans une autre table en raison de la logique métier complexe. En tant que tel, en ce moment, une copie du fichier de données mdb est désigné la base de données maître. Une seule personne a le maître à un moment donné. Si vous souhaitez y apporter des modifications, vous devez obtenir cette base de données de la personne qui a actuellement elle. Ceci est généralement pas un problème que les changements de données assez rarement qu'il ya assez de temps pour que cela se produise.

Cependant, un grand changement est à venir que nous n'avons pas assez de temps pour travailler de cette façon. Nous devons avoir plusieurs personnes qui travaillent sur les données à la fois. Maintenant, je suis conscient que vous pouvez partager le fichier .mdb sur un lecteur réseau et ont plusieurs personnes dans le même travail de bureau sur ce dossier avec peu ou pas de risque, mais nous avons besoin des gens de différentes entreprises de travailler sur les données en même temps . si je comprends bien, la mise en place d'un VPN pour partager les données à travers est un mauvais plan.

Je crois que nous devons changer le back-end loin de MS Access et de passer à quelque chose comme serveur SQL. Mais comment est-il facile de convertir un schéma de cette façon? Comment les règles de validation de table MS Access représentés dans SQL Server?

Était-ce utile?

La solution

En règle générale acccess droite de la zone est des accès multi-utilisateurs comme un partage de fichiers. Ce que cela signifie est que vous pouvez prendre la base de données back-end (fichier .mdb) et le mettre sur un dossier partagé sur un serveur. Cela permettrait à quelques personnes dans votre bureau pour exécuter l'application en même temps. Mais cela signifie que nous parlons d'un bureau typique LAN. Lorsque vous commencez à parler de connexions à distance et les réseaux de VPN et étendus (WAN), puis en utilisant l'accès comme un partage de fichiers n'est pas stable.

Donc, si cela est seulement trois ou quatre personnes dans un environnement de réseau de bureau typique, puis en fonction de l'application, il est très probable que vous pouvez simplement mettre le backend sur un dossier partagé sur le serveur et continuent d'avoir toutes les extrémités avant déployées sur chaque ordinateur, et ils sont liés à ce fichier backend une base de données (MDB) sur le dossier partagé. MS Access fonctionne très bien ainsi.

Cependant, pour parler d'une sorte de VPN ou WAN, puis une solution possible est de déplacer votre fichier back-end mdb au serveur SQL, et continuer à utiliser tous les formulaires, rapports, etc. à partir de votre application en cours (plus de votre application fonctionnera comme avant lorsque vous le faites).

Une autre technologie vraiment super à considérer est client léger, ou soi-disant services terminaux. services Terminal Server juste une édition de fantaisie d'un système de bureau à distance. TS permet aux personnes de plus de bande passante même assez limitée pour exécuter et utiliser l'application à distance.

Toutefois, si vous parlez de trois à quatre utilisateurs sur un bureau typique LAN, qu'il est très possible que votre application fonctionnera avec très peu de modifications est, et vous déplacez simplement le fichier de base de données back-end dans un dossier partagé sur un serveur quelque part. Je ne peux pas cependant souligner que cela ne fonctionne que si tous les gens sont sur le même petit bureau LAN, et pas une sorte de connexion à distance ou un WAN / VPN. Ainsi, dans le cas de WAN / VPN, utilisez les services Terminal Server, ou envisager de déplacer le backend au serveur SQL, et continuer à utiliser l'extrémité avant de l'application comme il est.


modifier - plus d'infos: Ok, donc avec plus d'informations ici, nous pouvons aller de l'avant. Comme mentionné précédemment, ms-accès est multi-utilisateur dès la sortie de la boîte. Vous avez besoin des gens de différents endroits pour travailler sur ces données. Donc, cela signifie que votre application doit être configuré pour la capacité multi-utilisateurs, indépendamment de cette autre question de la localisation. Une fois que vous avez la configuration de l'application multi-utilisateurs pour vous ATTAQUER alors le problème de permettre aux gens d'utiliser le logiciel à partir d'endroits différents.

Ce n'est pas différent que si nous avons quelque chose pour la gestion de l'entreprise fête de Noël. Si nous avons une conception telle que, après la fête de Noël nous supprimons le fichier entier à recommencer pour la fête de Noël de l'année prochaine, alors nous pouvons encore permettre à plusieurs utilisations dans cette application. Cependant, la conception est telle que vous ne pouvez pas avoir plusieurs fêtes de Noël actifs en même temps à cause de vos conceptions. Donc, dans ce cas, il est pas le fait que l'application est multi-utilisateur. Dans ce type de scénario, on pourrait effectivement ajouter une nouvelle table appelée la table de fête de Noël année. Ensuite, on peut relier toutes les tables dans l'application à cette table principale comme les tables enfants. De cette façon, vous pouvez avoir plusieurs fêtes de Noël actifs en même temps pour cette conception. Ensuite, lorsque vous démarrez l'application, les utilisateurs sont invités à un certain type de liste pour choisir ce que la fête de Noël que vous voulez travailler.

Donc, ne pas confondre les deux questions distinctes ci-dessus. Il n'a pas de sens de se demander comment les services Terminal Server permet à l'application d'être multi-utilisateur, il ne fait pas une telle chose. Qu'est-ce que TS est fait vous permet de prendre une application qui est déjà multi-utilisateurs et permettre aux gens de régions éloignées d'utiliser cette application. Alors TS est un système qui permet aux gens d'exécuter et d'utiliser l'application à partir d'emplacements distants partout sur Internet. Vos conceptions dicteront toujours si votre demande pour nous permettre de plus d'une fête de Noël à être actif à til en même temps cependant.

Alors vous ne vous n'avez pas fait pas d'accès multi-utilisateur MS, MS Access est multi-utilisateur dès la sortie de la boîte et à faire quoi que ce soit, à l'exception d'adopter des technologies qui permettent aux utilisateurs dans différents endroits utilisent l'application. Donc, c'est-ce que TS fait, et aussi le serveur SQL peut faire pour vous.

Si votre conception est permet à un seul projet, nous pouvons permettre à plusieurs utilisateurs de différents endroits dans le monde à utiliser une application, mais ils être autorisés à avoir qu'un seul projet actif en raison des limites de conception de l'application.

Donc, tout votre logique de mise à jour de table etc peut fonctionner comme avant. Il vous suffit de demander est-ce que le applicaion permet maintenant un utilisateur de quitter le applcaion, et un autre utilisateur concluez et faire leur travail? Faire semblant qu'il n'y a qu'un seul ordinateur autonome dans le bureau. Peut employés durign le diffent jour asseyez-vous et l'utiliser un ordinateur et qu'une application avec une backend pour chacun de leurs projets distincts?

Donc, en utilisant SQL Server ou les services Terminal Server ne rend pas votre application plus (ou moins) multi-utilisateur, alors il est maintenant. Ces technologies peuvent certainement augmenter le nombre d'utilisateurs qui peuvent utiliser l'application en même temps.

MS Access est maintenant multi-utilisateurs. Cependant ce serveur SQL fait, ou TS n'est de permettre à une plus grande flexibilité en termes de la façon dont les utilisateurs connectés à distance à cette application.

Autres conseils

OMI vous aurez certainement besoin de convertir la base de données à un serveur multi-utilisateurs, indépendamment de ce que d'autres solutions que vous considérez. Il y a un assistant de migration qui devrait se révéler utile ( http://support.microsoft.com/kb/237980), vous rencontrerez probablement des éléments qui permet l'accès et le serveur SQL fait pas, mais pour la plupart devrait être indolore. Vous pouvez indiquer vos copies d'accès local à utiliser cette nouvelle source de données (via ODBC, par exemple) et je crois qu'il devrait travailler à peu près tous de la même manière. Je n'ai pas fait cela depuis des années, aucune idée de ce que les règles de validation sur le terrain (ils ne seraient pas encore sur la forme?) Tournerait en. Vous pouvez télécharger une version d'essai du serveur SQL et faire en moins d'une heure pour obtenir un sentiment de combien d'efforts il faudrait.

Comme d'habitude, vous avez une excellente réponse d'Albert Kallal.

Si vous voulez envisager la migration vers SQL Server, il est un outil dans le groupe SQL Server. Assistant de migration SQL Server pour l'accès (SSMA Access) http://www.microsoft.com/sql/solutions/migration/ l'accès / default.mspx qui est mieux que l'accès Assistant de migration.

Voir aussi mes pensées au hasard sur Upsizing SQL Server de la page Microsoft Access Conseils http: //www.granite.ab.ca/access/sqlserverupsizing.htm

Comme vous pouvez le voir dans les commentaires à votre affichage le terme contrôle des changements que votre organisation utilise est non traditionnelle et plutôt intéressante. Bien que je puisse voir comment il y a des années de quelqu'un qui essaie de trouver une solution aux bureaux distants l'évolution des données monteraient avec cette solution. Je peux aussi voir que la façon dont il serait suffocante.

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