SET XACT_ABORT ON; DECLARE @maxRetry int ; SET @maxRetry = 5 DECLARE @lastError int RETRY_COMMAND: SET @lastError = 0 BEGIN TRY BEGIN TRANSACTION -- INSERT / UPDATE / DELETE -- (...) COMMIT TRAN END TRY BEGIN CATCH print ERREOR_MESSAGE() SET @lastError = ERROR_NUMBER() IF XACT_STATE() = -1 ROLLBACK TRAN; -- Ici si erreur de lock, alors recommence dans une seconde IF @lastError in(1222, 1207) and @maxRetry > 0 BEGIN WAITFOR delay '00:00:01' SET @maxRetry = @maxRetry - 1 GOTO RETRY_COMMAND; END END CATCH IF @lastError = 0 print 'SUCCES' ELSE print 'ECHEC'