|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre émérite
![]() Inscription : août 2010 Messages : 529 ![]() |
Bonjour,
Après avoir travaillé sur un très gros projet HF à convertir en SQL Server via OLE DB, j'ai constaté quelques problèmes auxquels il faut faire attention. Voici un petit projet quick & dirty qui illustre les points les plus croustillants. Pour le tester, il faut un serveur SQL accessible via OLE DB par TCP/IP. Dans "Provider" vous pouvez saisir "SQLOLEDB" pour SQL Server, ou "SQLNCLI" pour SQL Server 2005 ou "SQLNCLI10" pour 2008. Si vous saisissez le provider "MSDASQL" et que dans "Serveur" vous mettez le nom d'une source ODBC, vous aurez "ODBC via OLE DB". Mais ça m'a l'air assez mauvais comme provider, il m'a semblé qu'un SELECT bloquait la table complète jusqu'à la fermeture de la requête, il faudra vérifier ça. Enfin, il y a la possibilité de saisir le nom d'une source ODBC pour faire une petite comparaison de performances. Les sujets abordés sont : - Utiliser un curseur serveur (curseur par défaut) pour autre chose que des SELECT peut amoindrir les performances et la fiabilité - Les SELECT agrégats gaspillent des ports TCP et peuvent bloquer toute connexion pendant quelques minutes - Différence de performance entre SQLExec et HExécuteRequêteSQL - Différence de performance entre OLE DB et ODBC - Pourquoi il ne faut pas utiliser HModifie, sous peine de plantages rares et incompréhensibles - hRequêteSansCorrection - hLimiteParcours - hSansRafraîchir, et le problème de POUR TOUT pour parcourir un résultat de requête - Les sources de données locales qui ne le sont pas réellement WD15 : http://www.mediafire.com/download.php?6tio7cr20ed9r7u WD16 : http://www.mediafire.com/download.php?gy90lj2b05c2kg9 Note : j'ai pris soin de n'utiliser que du code SQL compatible avec n'importe quelle base (je crois), donc vous pouvez tester avec autre chose que SQL Server, mais je ne sais pas qui d'autre maintient un provider OLE DB. |
|
|
40
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 682 ![]() |
Excellent
J'ai regardé rapidement mais il faudra que je regarde ça en détail, c'est très interessant. Merci de partager votre expérience OleDb Windev. |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Inscription : août 2010 Messages : 529 ![]() |
Bonjour,
J'ai mis à jour les 2 projets : - Correction du test des agrégats et connexions TCP. - Utilisation d'un curseur forward only pour la comparaison avec SQLExec/SQLAvance. - Ajout d'un SELECT avec un plus gros résultat pour la comparaison SQLExec/HExécuteRequêteSQL (avantage grandement SQLExec). - Ajout d'un petit commentaire pour dire que le curseur forward only est aussi rapide que le curseur client sur les requêtes de modif. |
|
|
00
|
|
|
#4 |
![]() ![]() Nicolas LAURETChef de projet en SSII Inscription : novembre 2003 Messages : 1 104 ![]() |
beaucoup pour ce programme très instructif !
__________________
Modérateur Business Intelligence / Windev A lire avant de poster Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
|
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() Arnaud BenhamdineConsultant Inscription : octobre 2004 Messages : 209 ![]() |
Super !
Très intéressant. Pour PostgreSQL, il y a plusieurs drivers OLE DB qui sont maintenus, je vais tester tout ça si je trouve le temps... Au fait, OLE DB n'a plus que 7 ans à vivre ![]() http://www.developpez.com/actu/36666...s-aux-donnees/ |
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : août 2010 Messages : 529 ![]() |
Bonjour,
Certains m'ont demandé de retrouver les projets de test. Donc les voici. |
|
|
20
|
Copyright © 2000-2013 - www.developpez.com