2010-11-08 20 views
1

J'ai 2 tables de liens dans une base de données MS Access. L'une des tables de liens est liée à une table dans une base de données Sybase et les autres à une base de données SQL Server.MS Access se bloque lors de la comparaison de 2 tables de liens

Les structures de tables sont identiques et ont les mêmes données, sauf quelques lignes.

J'ai essayé l'assistant de requête 'Trouver des lignes non appariées' pour comparer les deux tables et trouver le nombre de lignes qui sont identiques (et différentes). Mais le problème est que MS Access se bloque pour des tables énormes (10 millions + lignes).

Y a-t-il des paramètres que je peux modifier afin qu'Access ne se bloque pas? J'utilise des connexions ODBC à Sybase et SQL Server.

Une autre chose que j'ai remarquée est que lorsque je clique avec le bouton droit sur la table de liens SQL Server et que je clique sur ouvrir, elle affiche toutes les lignes de la table. Quand je fais la même chose pour Sybase, il se bloque et je dois fermer Access via Task Manager.

Quelques détails: Version Sybase - 12.5.3 version SQL Server - 2008 R2 MS Access Version - 2003

+2

Est-il possible que vous le fassiez sur le serveur SQL: http://support.microsoft.com/kb/280102? Cela semble un peu difficile d'impliquer Access. – Fionnuala

+0

Salut Remou, Merci beaucoup pour cette suggestion. Cela semble parfait. Malheureusement, je n'ai pas accès au serveur sur lequel SQL Server est installé. Mais si l'utilisation d'Access ne fonctionne pas du tout, je vais essayer d'obtenir l'accès et essayer la méthode du serveur lié. – ananthbv

+1

Oui, +1 pour ce faire en utilisant des serveurs liés, si possible. Sinon, il n'y a pas grand-chose que Access peut faire d'autre que de faire glisser toutes les données vers la machine locale sur le réseau et de les comparer sur votre petit PC plutôt que sur le gros serveur costaud. Je fais quelques suppositions ici, mais j'ai passé un peu de temps à accélérer les choses en déplaçant ce type de requête d'Access vers le (s) serveur (s) approprié (s). –

Répondre

1

A première vue, je dirais que le problème est que l'accès tente de faire cette requête localement et tire la majeure partie de la table sur le fil. C'est là que vous avez souvent le mythe que l'accès fait cela tout le temps, alors qu'en fait, il ne le fait que sur certains événements de bord. Y a-t-il moyen de réduire les données que vous comparez? Peut-être que la table est une liste de ventes de produits et que vous pourriez faire une ligne de produits à la fois ou quelque chose comme ça?

+1

Yup, d'accord. Une mauvaise chose à essayer: si vous faites glisser les tables manuellement de toute façon, vous pouvez le faire explicitement, c'est-à-dire séparer votre requête en deux étapes, une qui fait des copies locales des tables (peut-être réduire les colonnes au minimum nécessaire) et ensuite celui qui compare les deux localement. C'est moins susceptible de se bloquer. Mais toutes choses étant égales par ailleurs, il vaut mieux essayer de le faire sur l'un des serveurs si vous pouvez le gérer. –