|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Expert Confirmé
![]() Développeur informatique Inscription : août 2005 Messages : 1 457 ![]() |
Bonjour,
2 petites questions à propos des transactions. Le contexte : Je m'occupe d'un module de transferts de données entre 2 systèmes dont l'un utilisant une BDD SQLServer 2008R2 et l'autre est représenté par des fichiers EDIFACT. Ce module est découpé en 9 services (un pour chaque flux), chaque flux dispose de sa connexion au SGBD. Donc soit un service intègre un flux EDIFACT dans une BDD SQL Server, soit il génère un flux EDIFACT à partir de la BDD. Dans le cas des réceptions, j'ai énormément de requêtes pour intégrer (gestion de stock notamment) tous les éléments du flux EDI en BDD et j'intègre la totalité de ces requêtes dans une seule et unique transaction. Pour donner un ordre d'idée ça peut aller jusqu'à 50 requêtes de tous types (SELECT, UPDATE, INSERT et DELETE) entre le BEGIN et le COMMIT. Au niveau du code, nous utilisons Windev (pas le choix :'( ). Mon code appelant au niveau le plus haut est encadré par un équivalent de Try Catch. Le BEGIN est appelé au début du Try, le COMMIT juste en dehors et le ROLLBACK est dans le Catch. Dans les méthodes de niveau inférieur, toute erreur lève ou est propagée en une exception. On finit donc systématiquement par un Rollback en cas d'erreur. Le code SQL d'initialisation d'une transaction est le suivant : Le code SQL de fin de transaction est le suivant : Le code SQL de rollback est le suivant : Les transactions ne sont donc pas nommées, mais comme chaque service a sa propre connexion cela ne devrait pas poser de problème. Si ? A l'arrivée, je constate que ça ne fonctionne pas. Lors que j'ai une erreur, les requêtes de modification de la BDD précédant l'erreur sont toujours actives après l'exécution du service. Quelqu'un aurait-il une piste pour localiser le dysfonctionnement ? Serait-ce du à l'absence de nommage des transactions ? Au nombre de requêtes dans les transactions ? A autre chose que je ne connais pas ? Voilà. Sinon dernière info le niveau d'isolation n'est pas modifié, il est en READ COMMITTED. Merci.
__________________
"Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste." Kenneth E. Boulding "/home/earth is 102% full ... please delete anyone you can." Inconnu |
|
|
00
|
|
|
#2 | ||
![]() ![]() Yves Développeur informatique Inscription : janvier 2007 Messages : 3 878 ![]() |
Citation:
Citation:
Après avoir fait les modifs et avant de relancer ton service/executable, pense à aller faire un tour dans SQLServer pour supprimer toutes les transactions et verrous encore en attente.
__________________
Sevyc64 --- Le partage est notre force NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS |
||
|
|
10
|
|
|
#3 |
|
Expert Confirmé
![]() Développeur informatique Inscription : août 2005 Messages : 1 457 ![]() |
Merci pour l'aide.
Je les vois où les informations sur les transactions dans SQL Server Manadgement Studio ?
__________________
"Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste." Kenneth E. Boulding "/home/earth is 102% full ... please delete anyone you can." Inconnu |
|
|
00
|
|
|
#4 | ||
![]() ![]() Yves Développeur informatique Inscription : janvier 2007 Messages : 3 878 ![]() |
Tu peux utiliser la requete suivante pour avoir la liste des transactions actives sur ta base :
Code :
__________________
Sevyc64 --- Le partage est notre force NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS |
||
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 935 ![]() |
1) redéveloppez le tout sous forme de proc stock
2) alimentez les fichiers dans une base "tampon" dans laquelle vous avez reproduit des tables brutes équivalente à vos tables de destination, ou mieux des tables in (proche de la structure de vos fichier) et des tables out (proche de la structure de vos tables de destinations 3) faites tout votre nettoyage de données par des requêtes dans ces tables tampon de IN vers OUT 4) un fois nettoyé désactivez tous les index, sauf ceux sémantiques (clef primaire, contrainte d'unicité...) de toutes les tables concernées avant la mise à jour (ALTER INDEX ... DISABLE), insérez les données de table tampon out à table cible dans la base de prod et remettez les après (ALTER INDEX ... REBUILD). 5) au besoin, ne gérez aucune transaction globale, mais prévoyez de loguer les erreurs des commandes finale pour savoir ou vous en êtes... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#6 | ||||
|
Expert Confirmé
![]() Développeur informatique Inscription : août 2005 Messages : 1 457 ![]() |
Citation:
Citation:
Citation:
Citation:
__________________
"Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste." Kenneth E. Boulding "/home/earth is 102% full ... please delete anyone you can." Inconnu |
||||
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 935 ![]() |
j'ai écrasé votre message en me trompant de bouton !!!!!
Désolé !
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
01
|
|
|
#8 |
|
Expert Confirmé
![]() Développeur informatique Inscription : août 2005 Messages : 1 457 ![]() |
Pour le reste je ne peux malheureusement pas refaire cette partie pour des raisons de délais mais je prends note de la méthodologie pour un prochain projet.
__________________
"Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste." Kenneth E. Boulding "/home/earth is 102% full ... please delete anyone you can." Inconnu |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com