2008-11-11 9 views
1

Saisir des pailles ici ... Je travaille avec un système de bureau VB6 en utilisant plusieurs bases de données Access 2003 (.MDB). Récemment, j'ai changé la première fonction de VB6 à VB.NET, en utilisant toujours une base de données Access. C'est plus qu'une conversion, mais une réécriture avec des fonctionnalités supplémentaires. C'est encore une fonctionnalité assez simple, avec une base de données à faible volume. Nous avons 1400 clients, de petites entreprises avec différentes qualités de machines. La plupart des clients sont satisfaits du nouvel écran et de la fonctionnalité. Un très petit nombre de ces clients ont connu une lenteur EXTRÊME en chargeant le datagridview. Le service client nous dit que 1) les machines ont au moins 1 Go de RAM, et 2) le redémarrage résout toujours le problème.VB.NET supprime-t-il les bases de données Access?

J'ai écrit une application pour ralentir sévèrement ma machine, et elle fonctionne toujours mieux pour moi que pour ces quelques clients. De plus, ma base de données Access n'a jamais été saccagée par cette application.

Des suggestions?

Merci!

+0

On dirait que vous avez une fuite de mémoire dans votre application. Des utilisateurs multiples frappent-ils le même DB d'accès? – AlexCuse

+0

Ces deux magasins ont plusieurs machines. Multiple signifie entre 2 et 4. Ils auraient la possibilité de frapper le même DB, mais pas probablement le faire fréquemment. Merci de votre aide! – CindyH

+0

Multi-utilisateur n'est pas une cause en soi de corruption. Si vous expérimentez de la corruption, alors quelque chose ne va pas dans l'environnement d'exploitation, que ce soit du matériel ou des logiciels. Et c'est une chienne à dépanner. –

Répondre

2

Le redémarrage lors de la mise à jour d'une base de données d'accès peut la détruire.

Vous avez besoin de plus d'informations pour mieux comprendre ce qui se passe. Ils ont besoin de collecter des informations pour vous sur un poste de travail qui rencontre le problème. En utilisant le gestionnaire de tâches que vous pouvez les obtenir les informations suivantes:

  • utilisation du processeur
  • Quelle tâche consomme le plus cpu
  • Peak (commis) mémoire sur XP - pas equiv sur Vista
  • total (engagé) mémoire sur XP - Vista ne equiv
  • mémoire sur XP Disponible (physique) - gratuit sur Vista (fait sans valeur par SuperFetch)

Il est als o possible d'utiliser l'outil de ligne de commande "SYSTEMINFO" sur XP et Vista pour obtenir la mémoire totale et disponible. Si vous avez très peu disponible et sur XP si votre Total engagé est plus grand que votre Total Physique, alors vous êtes probablement en train d'échanger et le manque de mémoire (ou une fuite de mémoire) cause votre ralentissement.

En résumé, vous avez besoin de plus d'informations. Il peut être une autre application sur le poste de travail est à l'origine du problème. Nous avons rencontré une situation dans laquelle Notes 5.0 rencontrait un problème: si la plus grande partie de la fenêtre était masquée par une autre fenêtre et que vous receviez un nouveau message, l'utilisation du processeur sur Notes est passée à 100%.Cela a provoqué une lenteur des applications et à moins que vous ne soyez sur le poste de travail en train de regarder le moniteur de tâches, vous ne devineriez jamais que c'était Notes qui causait le problème. Le problème a toujours été appelé sur un programme différent (celui au premier plan). Access peut également utiliser 100% cpu dans différents modes, même si cela ne semble pas faire quoi que ce soit.

Rassemblez autant d'informations que possible. Vous pourriez vouloir écrire un vbscript ou un programme qui rassemblera des informations pour vous afin que quiconque ayant le problème puisse l'exécuter pour rassembler l'information avant de redémarrer.

Un fichier batch qui effectue les opérations suivantes vous donnera un peu d'info:


@echo off 
SystemInfo >c:\systeminfo.log 
tasklist /v >>c:\systeminfo.log 
+0

belle collection d'indices - merci! Je verrai quel type d'information ils peuvent déjà collecter et commencer avec vos suggestions pour plus. – CindyH

0

Non, VB.Net fonctionne très bien avec Access. Les environnements partagés verront l'accès rejeté.

Depuis le redémarrage résout le problème, je voudrais vérifier que vous fermez vos connexions correctement.

+0

Je ne pense pas. Besoin d'utiliser couramment un DB d'accès pour les utilisateurs 1-10 sur LAN. Si les utilisateurs ne l'utilisent pas beaucoup, tout fonctionne bien. Mais ce comportement n'est pas "par défaut". Une certaine expérience avec tweaking est nécessaire. Mais toutes les informations sont disponibles sur internet. – TcKs

+0

Les programmeurs compétents n'ont aucune difficulté à écrire des applications multi-utilisateurs en utilisant des bases de données Jet pour le magasin de données. –

-1

Cela ressemble à une grande fuite de mémoire pour moi.

Certains clients laisseront votre application fonctionner plus longtemps que d'autres, et seront plus durement touchés. L'utilisation de l'accès où il y a plus que quelques utilisateurs simultanés entraîne inévitablement de la douleur.

+0

L'utilisation d'Access avec plusieurs utilisateurs lorsque vous utilisez des applications de programmation incompétentes sur le moteur de la base de données Jet entraîne parfois des problèmes. Mais c'est l'INCOMPETENCE qui pose problème, pas Access/Jet. –

+0

VB.NET (& VB6) ne fuient pas la mémoire. (Vous pouvez "fuir" les connexions à la base de données, cependant). –

2

Nous avons une expérience similaire, la plupart des cas sont des causes par antivirus. Ils vérifient TRÈS souvent le fichier (certains antivirus à chaque accès au fichier).

+0

L'AV doit être désactivé pour les MDB si vous utilisez une analyse basée sur l'extension de fichier. Il n'y a qu'une seule instance d'un virus Access en cours d'exécution, et si tout ce que vous avez est un backend MDB, il n'y aura jamais de code exécuté depuis ce MDB (car les utilisateurs ne l'ouvrent pas) dans Access). –

Questions connexes