Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/02/2011, 07h28   #1
Futur Membre du Club
 
Inscription : avril 2005
Messages : 102
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 102
Points : 18
Points : 18
Par défaut [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
phoenix75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 08h41   #2
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Cela me parait très bancale?
Pourquoi ne pas intégrer cette logique directement dans le job? vous n'avez pas la main dessus?
Votre boucle ne vérifie que toute les 10 secondes... le job peut très bien avoir passé une ou deux étapes sans que votre SP n'ai pu le voir...
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 09h05   #3
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 878
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 878
Points : 7 655
Points : 7 655
Et surtout, si j'ai bien compris le principe (je suis pas expert en PS), elle ne lit qu'une seule fois l'êtat du job, ensuite elle se contente de vérifie toutes les 10 sec si le premier résultat n'aurait par hasard pas changé (chose qui n'arrivera jamais)

Il faudrait peut-être mettre le SELECT à l'intérieur de la boucle While pour relire le nouvel état du job, non ?
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/02/2011, 09h14   #4
Futur Membre du Club
 
Inscription : avril 2005
Messages : 102
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 102
Points : 18
Points : 18
Merci,

je crois que je vais me faire tout petit


je teste ca et je vous tiens au courant, mais il y a de fortes chance que ce soit ca

merci encore
phoenix75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 10h35   #5
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par iberserk Voir le message
Cela me parait très bancale?
Pourquoi ne pas intégrer cette logique directement dans le job? vous n'avez pas la main dessus?
Surtout que si le job est par exemple e l'étape 1, ou 5, le while va tourner dans le vide sans le DELAY !
prévois peut-être un extincteur à coté du serveur
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h31.


 
 
 
 
Partenaires

Hébergement Web