2010-01-15 5 views
1

j'ai un MDB qui sert à contenir un groupe de tables liées. Ces liens pointent vers des tables dans un autre mdb Access. Dans le cadre d'une migration contrôlée, je modifie ces tables de liens pour pointer vers une instance de SQL Server, en itérant toutes les tables liées et en mettant à jour la chaîne de connexion vers un ODBC, puis en appelant RefreshLink sur le tabledef.MS Access se bloque lors du chargement d'un MDB contenant une table de serveur SQL lié

Cependant, lors de l'ouverture ma nouvelle base de données avec des liens ODBC, se bloque l'accès. Plus intéressant, si je supprime une seule table liée spécifique (via ADO), je peux alors ouvrir la base de données. Plus intéressant encore, si j'ajoute de nouveau cette table liée via l'interface graphique Access, elle ne plante pas, donc je sais que ce n'est pas un problème avec la table elle-même dans SQL Server.

, je dois donc de savoir ce qu'il est au sujet de cette table liée notamment accès qui provoque un plantage. Puis-je obtenir des informations sur l'accident pour vous aider? Où puis-je même commencer à enquêter?

EDIT: J'ai essayé plusieurs méthodes d'actualisation de la table de liens, soit par Actualiser le lien, soit en supprimant et en recréant les tables avec DSN ou sans DSN, etc. Chaque fois que c'est la même table qui provoque le mdb s'écraser à l'ouverture.

EDIT 2: Malheureusement, il semble que l'accident est en fait en quelque sorte vers le bas pour le contrôle de la source - si je désactive mon fournisseur de SCCAPI alors il n'y a pas de plantage. Je n'ai toujours aucune idée de comment enquêter.

Répondre

0

Aucune stratégie pour relier les tables ont changé les résultats, nous serions toujours obtenir le même accident dans la même base de données en raison de la même table. Cependant, la désactivation du contrôle de code source a résolu le problème, et personne n'a suggéré une raison possible à cela, ni une méthode d'investigation, donc je ferme la question en acceptant "Disable SCC" comme réponse.

0

Supprimer les liens et créer entièrement nouveaux. Les liens ODBC ne peuvent pas être actualisés de manière fiable même lorsqu'ils démarrent en tant que liens ODBC.

+1

Je suis d'accord. Écrire du code qui au démarrage supprime et recrée tous vos liens avant de faire quoi que ce soit d'autre. Ça devrait être très rapide. Vous pouvez utiliser une table locale avec une liste de tables et le lien dont ils ont besoin, ou simplement une seule ligne avec le serveur auquel se connecter (en supposant que toutes les tables liées doivent être recréées et se connecter au même serveur, et le présence de la table liée est ce qui déclenche sa suppression et sa recréation). – ErikE

+0

Il me vient à l'esprit que si les liens ODBC peuvent être mis à jour avec succès dépend du fournisseur ODBC. Par exemple, les liens vers le pilote ODBC du programme de comptabilité MYOB peuvent être mis à jour sans avoir à les supprimer et les recréer, mais d'après mon expérience, les liens vers SQL Server et MySQL ne le peuvent pas. –

+0

@Emtucifor: En fait, vous n'avez rien d'autre à faire que de stocker les noms de tables dans une collection personnalisée ou un tableau avant de les supprimer et de les recréer - pas besoin de stockage persistant. –

Questions connexes