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