[WD8] - Procédures stockées SQL appelées 4 fois !!!
4 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
[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
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
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:
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
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:
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
Merci Emmanuel,
je vais tester
"Emmanuel Lecoester" <elecoest@netcourrier.com> a écrit dans le message de
news: 4420e8c5$0$26080$626a54ce@news.free.fr...
[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" 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
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:
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" <christophe.charron.develo@gmail.com> a écrit dans le
message de news: 4421155c$0$21288$8fcfb975@news.wanadoo.fr...
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
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