Procedure stockee, Lock et TimeOut SQL Server 2005
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:
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