Aide pour un script

Poda -  
 PODA -
Voici un script que je fais tourner chaque 5 mns par le runner sur mon poste pour réinitialiser les utilisateurs qui sont parfois déconnectés de ma BD. Mon problème est que lorsque deux occurences se chevauchent, mon script se plante. Comment dire à la deuxième occurence d'attendre la fin de la première avant de se lancer.

echo off
sqlplus der/vil@vildb @c:\maj\maj.sql

Merci
A voir également:

3 réponses

Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Le plus simple, à mon avis, serait de créer un champ dans une table qui indique si un script est en cours d'exécution ou non.

Au début de ton script, tu vérifies ce champ ; s'il indique qu'une occurrence est en cours, il s'arrête là (ou il attend, suivant tes besoins). Si aucune occurrence n'est en cours, il modifie cette valeur pour dire qu'il y a un script qui tourne. À la fin de son travail, il remet la valeur pour dire qu'il a fini.

Xavier

PS : un problème quand même, si le script se plante, le paramètre restera marqué comme "script en cours". On peut contourner le problème en indiquant une date de début d'exécution, et en considérant que si le paramètre indique qu'un script tourne depuis plus d'une heure, on considère qu'aucun script ne tourne.
0
Poda
 
J'ai pensé effectivement à mettre un controle, malheureusement je en sais pas le faire.
0
Poda
 
Comment faire donc une boucle pour que le script tourne sans se mordre la queue?
Merci
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Tu as bien essayé de le mettre dans ton script sql ? C'est écrit en quel langage, déjà ? Pour quel SGBD ?)
0
TomCody Messages postés 10 Statut Membre
 
sqlplus der/vil@vildb @c:\maj\maj.sql
C'est un script sql qui me permet de me connecter à ma base de données et d'exécuter ensuite une commande oracle qui se trouve dans maj.sql. La commande oracle permet de réinitialiser les utilisateurs qui sont connectés à ma BD.
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Et dans ce script SQL, tu n'as pas réussi à faire ce que je t'ai proposé ? Tu as essayé comment exactement ?
Sinon, la méthode de Dubcek devrait marcher aussi (attention à utiliser un nom de fichier peut-être un peu plus explicite, parce que si une autre appli met un fichier lock dans TEMP...)
0
TomCody Messages postés 10 Statut Membre
 
Quelqu'un peut-il m'indiquer comment intoduire une boucle dans le scprit ci-dessous afin quil ne se morde pas la queue c'est-à-dire que la seconde ocurence ne s'exécute pas tant que la première n'est pas finie.

echo off
sqlplus der/vil@vildb @c:\maj\maj.sql

Merci
0
dubcek Messages postés 19032 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
hello
echo off

if exist %TMP%\lock (
	echo message
	exit
)

echo %0 en exécution  > %TMP%\lock
sqlplus der/vil@vildb @c:\maj\maj.sql
del %TMP%\lock
0
TomCody Messages postés 10 Statut Membre
 
Merci, je vais le tester et vous tenir informé.
0
PODA
 
bonsoir
Juste dire merci à tout ceux qui m'ont donné un coup de main dans la résolution de mon problème. Des ennuis de santé m'ont empêché de le faire plus tot.
0