Bonjour tout le monde,

Cette procédure archive toutes les prospections (table prospections) datant de plus de 6 ans ainsi que toutes les actions (table praction) relatives à ces prospections . Je ne comprend pas pourquoi l’exécution ne se finalise pas au bout de 25 min (et plus).Pourtant niveau syntaxe la procédure semble correcte.



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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
CREATE PROC dbo.ArchiveDonnées
(
    @CutOffDate datetime = NULL
)
AS
BEGIN
    SET NOCOUNT ON
 
    IF @CutOffDate IS NULL 
    BEGIN
        SET @CutOffDate = DATEADD (yyyy, -6, CURRENT_TIMESTAMP)
 
    END
 
END
 
    BEGIN TRAN
 
        INSERT INTO Migration.dbo.migprospection
        SELECT * 
        FROM recette_670.dbo.prospection
        WHERE datefin < @CutOffDate
 
        IF @@ERROR <> 0
        BEGIN
            ROLLBACK TRAN
            RAISERROR ('une erreur est survenue lors de la copie des données vers Migration.dbo.migprospection', 16, 1)
            RETURN -1
        END
 
        INSERT INTO Migration.dbo.migpraction
        SELECT *
        FROM recette_670.dbo.praction
        WHERE fk_prospect IN
        (
            SELECT pk_prospect
            FROM dbo.prospection
            WHERE datefin < @CutOffDate
        )
 
        IF @@ERROR <> 0
        BEGIN
            ROLLBACK TRAN
            RAISERROR ('une erreur est survenue lors de la copie des données vers Migration.dbo.migpraction', 16, 1)
 
            RETURN -1
        END
 
        DELETE dbo.praction
        WHERE fk_prospect IN
        (
            SELECT pk_prospect
            FROM dbo.prospection
            WHERE datefin < @CutOffDate
         )
 
        IF @@ERROR <> 0
        BEGIN
            ROLLBACK TRAN
            RAISERROR ('une erreur est survenue lors de la copie des données vers recette_670.dbo.praction', 16, 1)
            RETURN -1
        END
 
        DELETE dbo.prospection
        WHERE Datefin < @CutOffDate
 
        IF @@ERROR <> 0
        BEGIN
            ROLLBACK TRAN
            RAISERROR ('une erreur est survenue lors de la copie des données vers recette_670.dbo.prospection', 16, 1)
            RETURN -1
        END
 
    IF @@TRANCOUNT > 0
    BEGIN
        COMMIT TRAN
        RETURN 0
    ENd
GO

Quelqu'un peut m'éclairer ?

MERCI