Question

Microsoft Access est un moyen astucieux d’accéder aux données d’une base de données backend MS SQL Server, mais j’ai toujours eu des problèmes pour accéder (pour ainsi dire) à des tables de données volumineuses, en particulier lorsque vous essayez de basculer entre les résultats et le mode de conception dans Access. .

Access me donne un certain nombre de choses astucieuses, dont les tableaux croisés ne sont pas les moindres, mais cette connexion suspendue au serveur me rend un peu fou!

Est-ce que des gourous de MS Access savent comment optimiser la connexion ODBC afin de ne pas effectuer ce qui semble être des analyses de table complètes lorsque je veux juste peaufiner et construire mes requêtes?

Était-ce utile?

La solution

Le pilote ODBC passera le plus de travail possible à SQL Server mais dès que vous utilisez une fonction vba telle que Nz ou une syntaxe non SQL Server telle que PIVOT, le pilote ODBC doit extraire davantage de données et d'index pour obtenir le travail. fait côté client.

Selon une autre réponse, construisez vos vues dans SQL Server et créez un lien vers les vues ou utilisez un projet Access Data.

Remarque: les requêtes PIVOT avec un nombre inconnu de colonnes ne peuvent pas être traitées dans SQL Server de la même manière qu'Access le fera en mode natif. Ainsi, si vous exécutez un pivot dans Access par rapport aux données SQL Server, vous récupérerez probablement l'intégralité de la table. Les requêtes de tableau croisé dynamique doivent être générées dans SQL Server à l'aide de techniques SQL dynamiques, sinon des vues pré-enregistrées comportant toutes les colonnes codées en dur. Cliquez sur ce lien pour savoir comment procéder:

http://www.sqlservercentral.com/articles/Advanced+ Requête / requête pivotante pour microsoftsqlserver / 2434 /

Autres conseils

Comme d'autres l'ont déjà dit, le seul moyen d'améliorer les performances sur des tables volumineuses est de laisser le moteur de base de données SQL Server faire le travail à votre place. Une méthode pour ce faire qui n’a pas été mentionnée consiste à utiliser une requête directe qui vous permettra de conserver tout votre code dans MS Access, sans avoir à créer des objets sur le serveur SQL:

http://support.microsoft.com/kb/303968

Vous devrez écrire SQL Server T-SQL plutôt que le dialecte Access; Cependant, SQL 2005 (lorsqu’il est exécuté en mode de compatibilité 90) prend en charge une commande PIVOT.

Mon problème similaire était que la connexion ORACLE ODBC était suspendue après la sélection de la connexion Link table / ODBC. Le gestionnaire de tâches a déclaré ne pas répondre au bout de 10 minutes. La connexion envoie ensuite une requête ping à ORACLE pour toutes les tables disponibles. J'avais activé la connexion à l'administrateur ORACLE ODBC. Il a donc dû écrire toutes ces informations dans le journal, ce qui a peut-être ralenti les résultats. Le journal faisait 60 Mo une heure plus tard, quand je l’ai éteint, alors tout allait bien!

Pour le désactiver, accédez à l'onglet Installation d'Oracle / Administration réseau / Administrateur MS ODBC / Recherche et désactivez-le!

Une bonne ressource sur ODBC se trouve ici: http: //eis.bris. ac.uk/~ccmjs/odbc_section.html

Malheureusement, Access n’est pas en mesure de charger une grande partie de ce travail sur le serveur. En effet, il effectuera d’énormes analyses de tables lors de la conception de requêtes sur plusieurs tables ou vues dans SQL Server.

Vous pouvez créer et modifier des requêtes (vues) dans SQL Server à l'aide de SSMS et les stocker dans SQL Server pour améliorer considérablement les performances tout en utilisant Access pour votre serveur frontal.

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