Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD8] - Procédures stockées SQL appelées 4 fois !!!

4 réponses
Avatar
Dottore
Bonjour,

Je travaille sur la migration vers SQL Server d'une application qui avait
été écrite en Windev 8 et HF

Spécialiste C# / .NET / SQL Server, j'ai l'habitude de travailler avec des
procédures stockées
Les tests que j'ai réalisé démontrent que les procédures stockées qui font
uniquement des SELECT sont appelées 4 fois voir 16 fois si on les mets dans
une séquence SQL Begin ... End comme indiqué dans la documentation.
Les procédures faisant des INSERT / UPDATE sont elles appelées une seule
fois

Pour mettre en évidence ce problème, j'ai ajouté en début de chaque
procédure stockée un appel à une procédure stockée interne qui insert une
ligne dans une table de trace. Cet insert est encadré par une instruction
T-SQL, SET NOCOUNT ON qui permet de faire l'INSERT sans remonter le nombre
de lignes ajoutées.

Bref, j'ai donc abandonné la méthode consistant à utiliser HExecuteRequete()
pour m'orienter vers l'utilisation des ADO via Automation

Les phénomènes d'appels multiples ont disparus, sauf dans le cas où la
procédure stockée retourne une erreur via RAISERROR, là encore les appels
sont dupliqués 4 fois.

- Avez-vous constaté ce phénomène ? Sinon, je vous conseille de faire des
tests cas cela a un impact direct sur les performances de votre application

- Est-ce quelquechose spécifique à Windev ? Car le même code en VBScript
fonctionne correctement.

- Enfin, quelqu'un est-il arrivé à mettre en oeuvre un recordset déconnecté
avec Windev, car la notion de Nothing n'étant pas vraiment supporté par
WinDev,
je n'y suis pas arrivé. Le code oRs>>ActiveConnection = null le fonctionne
pas.

D'avance merci.

4 réponses

Avatar
Emmanuel Lecoester
[CUT]

Bref, j'ai donc abandonné la méthode consistant à utiliser


HExecuteRequete()
pour m'orienter vers l'utilisation des ADO via Automation



peux-tu essayer mssql4wd et nous renvoyer ton compte rendu STP. Dispo sur
www.sqlmanagerx.com

Les phénomènes d'appels multiples ont disparus, sauf dans le cas où la
procédure stockée retourne une erreur via RAISERROR, là encore les appels
sont dupliqués 4 fois.



Interssant à tester

- Avez-vous constaté ce phénomène ? Sinon, je vous conseille de faire des
tests cas cela a un impact direct sur les performances de votre


application

- Est-ce quelquechose spécifique à Windev ? Car le même code en VBScript
fonctionne correctement.



VB/ SQLServer c'est le même éditeur ;)

- Enfin, quelqu'un est-il arrivé à mettre en oeuvre un recordset


déconnecté
avec Windev, car la notion de Nothing n'étant pas vraiment supporté par
WinDev,
je n'y suis pas arrivé. Le code oRs>>ActiveConnection = null le


fonctionne
pas.



je suis preneur de cette information : but, mise en oeuvre, interet

--
Emmanuel Lecoester
Avatar
Christophe Charron
Dottore a écrit :
Bonjour,

Je travaille sur la migration vers SQL Server d'une application qui avait
été écrite en Windev 8 et HF

Spécialiste C# / .NET / SQL Server, j'ai l'habitude de travailler avec des
procédures stockées
Les tests que j'ai réalisé démontrent que les procédures stockées qui font
uniquement des SELECT sont appelées 4 fois voir 16 fois si on les mets dans
une séquence SQL Begin ... End comme indiqué dans la documentation.
Les procédures faisant des INSERT / UPDATE sont elles appelées une seule
fois

Pour mettre en évidence ce problème, j'ai ajouté en début de chaque
procédure stockée un appel à une procédure stockée interne qui insert une
ligne dans une table de trace. Cet insert est encadré par une instruction
T-SQL, SET NOCOUNT ON qui permet de faire l'INSERT sans remonter le nombre
de lignes ajoutées.

Bref, j'ai donc abandonné la méthode consistant à utiliser HExecuteRequete()
pour m'orienter vers l'utilisation des ADO via Automation

Les phénomènes d'appels multiples ont disparus, sauf dans le cas où la
procédure stockée retourne une erreur via RAISERROR, là encore les appels
sont dupliqués 4 fois.

- Avez-vous constaté ce phénomène ? Sinon, je vous conseille de faire des
tests cas cela a un impact direct sur les performances de votre application

- Est-ce quelquechose spécifique à Windev ? Car le même code en VBScript
fonctionne correctement.

- Enfin, quelqu'un est-il arrivé à mettre en oeuvre un recordset déconnecté
avec Windev, car la notion de Nothing n'étant pas vraiment supporté par
WinDev,
je n'y suis pas arrivé. Le code oRs>>ActiveConnection = null le fonctionne
pas.

D'avance merci.





Bonjour,
ce n'est pas propre à SQL Server ni aux procédures stockées. Avec mysql
et des requêtes classiques c'est aussi le cas (sont-ce des pseudo
'prepare' ?) Je n'ai jamais creusé très loin ...

--
Cordialement
Christophe Charron

PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or

Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:
Avatar
Dottore
Merci Emmanuel,

je vais tester


"Emmanuel Lecoester" a écrit dans le message de
news: 4420e8c5$0$26080$
[CUT]

Bref, j'ai donc abandonné la méthode consistant à utiliser


HExecuteRequete()
pour m'orienter vers l'utilisation des ADO via Automation



peux-tu essayer mssql4wd et nous renvoyer ton compte rendu STP. Dispo sur
www.sqlmanagerx.com

Les phénomènes d'appels multiples ont disparus, sauf dans le cas où la
procédure stockée retourne une erreur via RAISERROR, là encore les appels
sont dupliqués 4 fois.



Interssant à tester

- Avez-vous constaté ce phénomène ? Sinon, je vous conseille de faire des
tests cas cela a un impact direct sur les performances de votre


application

- Est-ce quelquechose spécifique à Windev ? Car le même code en VBScript
fonctionne correctement.



VB/ SQLServer c'est le même éditeur ;)

- Enfin, quelqu'un est-il arrivé à mettre en oeuvre un recordset


déconnecté
avec Windev, car la notion de Nothing n'étant pas vraiment supporté par
WinDev,
je n'y suis pas arrivé. Le code oRs>>ActiveConnection = null le


fonctionne
pas.



je suis preneur de cette information : but, mise en oeuvre, interet

--
Emmanuel Lecoester




Avatar
Dottore
Merci Christophe,

J'ai continué les tests et en fait je me demande si le problème que je
rencontre en cas d'erreur retournée par une SP via RAISERROR, n'est pas lié
à la gestion des erreurs Automation par WinDev.

Les messages d'erreur laissent sous entendre que WinDev fait 2 tentatives en
utilisant le nom après les >> en tant que méthode puis 2 tentatives en
l'utilisant en tant que propriété

"Christophe Charron" a écrit dans le
message de news: 4421155c$0$21288$
Dottore a écrit :
Bonjour,

Je travaille sur la migration vers SQL Server d'une application qui avait
été écrite en Windev 8 et HF

Spécialiste C# / .NET / SQL Server, j'ai l'habitude de travailler avec
des procédures stockées
Les tests que j'ai réalisé démontrent que les procédures stockées qui
font uniquement des SELECT sont appelées 4 fois voir 16 fois si on les
mets dans une séquence SQL Begin ... End comme indiqué dans la
documentation.
Les procédures faisant des INSERT / UPDATE sont elles appelées une seule
fois

Pour mettre en évidence ce problème, j'ai ajouté en début de chaque
procédure stockée un appel à une procédure stockée interne qui insert une
ligne dans une table de trace. Cet insert est encadré par une instruction
T-SQL, SET NOCOUNT ON qui permet de faire l'INSERT sans remonter le
nombre de lignes ajoutées.

Bref, j'ai donc abandonné la méthode consistant à utiliser
HExecuteRequete() pour m'orienter vers l'utilisation des ADO via
Automation

Les phénomènes d'appels multiples ont disparus, sauf dans le cas où la
procédure stockée retourne une erreur via RAISERROR, là encore les appels
sont dupliqués 4 fois.

- Avez-vous constaté ce phénomène ? Sinon, je vous conseille de faire des
tests cas cela a un impact direct sur les performances de votre
application

- Est-ce quelquechose spécifique à Windev ? Car le même code en VBScript
fonctionne correctement.

- Enfin, quelqu'un est-il arrivé à mettre en oeuvre un recordset
déconnecté avec Windev, car la notion de Nothing n'étant pas vraiment
supporté par WinDev,
je n'y suis pas arrivé. Le code oRs>>ActiveConnection = null le
fonctionne pas.

D'avance merci.





Bonjour,
ce n'est pas propre à SQL Server ni aux procédures stockées. Avec mysql et
des requêtes classiques c'est aussi le cas (sont-ce des pseudo 'prepare'
?) Je n'ai jamais creusé très loin ...

--
Cordialement
Christophe Charron

PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or

Tel : 0 437 499 107
Fax : 0 437 499 105
mailto: