Bonjour,
Nous avons migré un projet .adp tournant avec SQL 2000 vers SQL 2008 R2 en août dernier.
Tout c’est bien passé au début mais depuis quelques temps nous avons des soucis avec des UPDATE dans des trigger.
Avant UPDATE dbo.table SET Toto=’x’ passait sans problème même s’il y avait plusieurs enregistrements de Toto.
Aujourd’hui il faut sélectionner successivement chaque enregistrement pour pouvoir le mettre à jour : UPDATE dbo.table SET Toto=’x’ WHERE ClefToto=1
Quelqu’un aurait-il une idée de ce qui a pu provoquer cela alors que nous n’avons rien changé à la base SQL depuis notre migration ? D’autre part, pour faire cela, j’utilise souvent le type de procédure que je mets en exemple ci-après.
Je charge la clef des enregistrements à mettre à jour dans une table temporaire. Alors que le délai d’expiration des requêtes est fixé à 10 min je me retrouve avec « expiration du délai » bien avant les 10 minutes. De plus dans l’exemple ci-après la table contient environ 35000 enregistrements et bien avant les 10 min j’ai droit au message « délai expiré » ce qui m’oblige à découper le nombre d’enregistrements à traiter avec between.
Si quelqu’un avait une requête plus rapide et performante je suis preneur….
Merci.
Bonne journée
JPaul
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ALTER PROCEDURE zzzavirertrace AS DECLARE @tab table(tId_Trace int, tagi bit default(0)) SET NOCOUNT ON INSERT into @tab(tId_Trace) SELECT Id_Trace from dbo.T_Trace where Type_Trace is null and Id_Trace between 80000 and 90000 order by Id_Trace while exists(select top 1 tId_Trace from @tab where tagi=0) begin delete dbo.t_trace where Id_Trace=(select top 1 tId_Trace from @tab where tagi=0) update @tab set tagi=1 where tid_trace=(select top 1 tId_Trace from @tab where tagi=0) AND tagi=0 end RETURN
Partager