Aide pour un script

Fermé
Poda - 12 avril 2010 à 13:19
 PODA - 28 avril 2010 à 19:08
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

3 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 009
12 avril 2010 à 13:49
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
J'ai pensé effectivement à mettre un controle, malheureusement je en sais pas le faire.
0
Comment faire donc une boucle pour que le script tourne sans se mordre la queue?
Merci
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 009
13 avril 2010 à 11:28
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 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 13 avril 2010
13 avril 2010 à 12:07
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 009
14 avril 2010 à 16:24
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 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 13 avril 2010
12 avril 2010 à 18:55
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 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 5 584
13 avril 2010 à 12:22
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 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 13 avril 2010
13 avril 2010 à 12:42
Merci, je vais le tester et vous tenir informé.
0
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