Bonjour,
j'ai une erreur sur un de mes scripts et je ne comprend pas pourquoi...
*ce script fonctionne trés bien sur une autre machine, avec une base qui à la même structure mais pas le même contenu*
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
CREATE PROCEDURE SP_REC_PURGE
@p_nb_jour int 
AS
 
  -- Declaration  and initialisation de la variable de sauvegarde de @@Error.
  DECLARE @ErrorSave INT
  SET @ErrorSave = 0
 
  -- Déclaration du status du curseur
  DECLARE @Statuscursor INT
  SET @Statuscursor = 0
 
 
 
  DECLARE @li_nbre_of As Int
  -- Déclaration des variables 
  DECLARE @Id_Rec			AS varchar(10)
  DECLARE @Vers_Rec			AS int
  -- Déclaration du curseur de la recherche des recettes
  DECLARE search_rec CURSOR LOCAL FOR
  Select ID_REC,
         VERS_REC
    From rec
   Where ETAT_REC	= 2
     and DATE_MODIF	<= getdate() - @p_nb_jour
 
  -- Recherche des recettes
  Open search_rec
  Fetch next from search_rec Into @Id_Rec,@Vers_Rec
   -- Tant que la liste des recettes n'est pas terminée 
  While @@Fetch_Status = 0
  Begin
  	set set @li_nbre_of  = 0
  	Begin transaction
        set @li_nbre_of  =  (select count(*) 
                               from ord_fab 
                              where id_rec = @Id_Rec
                                and vers_rec = @Vers_Rec)
        if (@li_nbre_of = 0)
	Begin
          delete rec where id_rec = @Id_Rec
                       and vers_rec = @Vers_Rec
          set @ErrorSave = @@Error
          If (@ErrorSave = 0) 
          Begin
            Commit transaction
          End
          Else
          Begin
            Rollback transaction          
          End 
        End
    -- Positionnement sur l'enregistrement suivant
    Fetch next from search_rec Into @Id_Rec,@Vers_Rec
  End 
  Close search_rec 
  Deallocate search_rec 
 
GO
mon job qui permet d'éxecuter cette procedure,
est donc en croix avec le message suivant
The job failed. The Job was invoked by User ****. The las step to run was step 1 (PURGE)
si je demande des détails
Executed as user: AUTORITE NT\SYSTEM.
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION satetement is missing.
Previous count = 0, current count = 9.
[SQLSTATE 25000](Error 266)
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing.
Previous count = 0, current count = 9.
[SQLSTATE 25000](Error 266)
The step failed.
si je rajoute PRINT @@TRANCOUNT dans mon script
Executed as user: AUTORITE NT\SYSTEM.
1 [SQLSTATE 01000](Message 0)
2 [SQLSTATE 01000](Message 0)
3 [SQLSTATE 01000](Message 0)
4 [SQLSTATE 01000](Message 0)
5 [SQLSTATE 01000](Message 0)
6 [SQLSTATE 01000](Message 0)
7 [SQLSTATE 01000](Message 0)
8 [SQLSTATE 01000](Message 0)
9 [SQLSTATE 01000](Message 0)
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION satetement is missing.
Previous count = 0, current count = 9.
[SQLSTATE 25000](Error 266)
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing.
Previous count = 0, current count = 9.
[SQLSTATE 25000](Error 266)
The step failed.
rien de nouverau,
il me dit juste qu'il compte 9 fois mais je comprend pas ce qui le dérange avec le Previous count = 0, current count = 9