[SQL2K8] boucle dans une procédure stockée
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 :
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
|
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 |
Mon problème est qu'il ne respecte pas la condition.
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