Bonjour,
je suis en train de mettre en place une procédure stockée qui vérifie toutes les X secondes l'étape à laquelle se trouve un job
le job en question à mettons 5 étapes.
je veux que la SP arrête le job s'il est à une certaine étape, et patiente s'il est à une autre étape.
Je procède donc comme suit :
Mon problème est qu'il ne respecte pas la condition.
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 CREATE procedure test_job as begin declare @current_step nvarchar(50); declare @cpt int; set @cpt = 1 select @current_step = current_execution_step from ( SELECT current_execution_step from OPENROWSET('XXX', 'EXEC MSDB.dbo.sp_help_job @execution_status = 1') where name = 'JOB_TEST' ) t while @cpt = 1 begin if @current_step = '2 (check_step)' or @current_step = '4 (other_check_step)' begin WAITFOR DELAY '000:00:10' set @cpt = 1; end else if @current_step = '3 (exit_step)' begin EXEC dbo.sp_stop_job @job_name = 'JOB_TEST' set @cpt = 0; end end end
En fait, suivant l'étape où le job se trouve au moment où la SP est lancée, il suit la condition, mais au passage à l'étape suivante du job, il ne se passe rien :
ex :
job étape 2
lancement SP : il attend
job étape 3
SP toujours en exécution : il attend toujours ...
si j'arrête la SP alors qu'il est à l'étape 3, et que je la relance, il arrêtera bien le job.
J'ai l'impression que l'initialisation de la variable ne se fait pas dans les conditions de la SP.
Comment puis-je m'y prendre ?
merci d'avance
Partager