Bonjour,
J'ai un problème de TimeOut sur une base de données depuis quelques temps. Après analyse il semble que ce soit dû à un lock exclusif sur une table (GED_DOCUMENT). Ce lock est posé par une PS qui fait un update et semble provoquer les TimeOut sur des select vers cette table.
Voici donc ma PS qui fait l'Update :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 ALTER PROCEDURE [dbo].[sp_UpdateGEDDocument] ( @lng_Document numeric, @x_Doc ntext, @str_UserModif varchar(50), @int_state int ) AS UPDATE GED_DOCUMENT SET X_DOC = @x_Doc, S_USER_MODIFIED = @str_UserModif, I_ETAT = @int_state, S_DATE_TIME_MODIFIED = getdate() WHERE N_DOCUMENT = @lng_Document INSERT Into GED_SUIVI_ETAT_DOCUMENT (N_DOCUMENT, N_ETAT, DATE_MODIF, S_USER_MODIF) values (@lng_Document, @int_state, getdate(), @str_UserModif) IF (@int_state = 0 or @int_state = 1) BEGIN UPDATE GED_DOCUMENT SET S_USER_VALIDEUR = @str_UserModif WHERE N_DOCUMENT = @lng_Document END
Ma question est la suivante. Sachant que la première parti de la PS fait un UPDATE GED_DOCUMENT et que la dernière parti refait un UPDATE GED_DOCUMENT (après le IF) est ce que cela pourrait provoquer un problème au niveau du Lock dans cette PS. Et si c'est le cas , si j'ajoute un BEGIN avant mon premier UPDATE GED_DOCUMENT et un END avant mon IF cela corrigerait le problème ?
Merci enormement d'avance si vous pouvez m'aider
Partager