Ligne commande windows - tâche planifiée

zabou511 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
zabou511 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'exécute dans un .bat une ligne de commande qui me permet de me connecter à une BDD, d'exécuter une procédure stockée et d'enregistrer dans une fichier le résultat de cette procédure.

Ce .bat est lancé par une tâche planifiée. Ensuite je génère une autre tâche planifiée qui envoie ce fichier par courriel. La 2nd ne fonctionne pas car il indique que le fichier est toujours en cours d'utilisation. Comment puis-je faire pour libérer le fichier?

Je met le contenu de mon .bat afin que vous regardiez mon dysfonctionnement :

set dat=%date:~6,4%%date:~3,2%%date:~0,2%

start sqlcmd -S xxxxx\SQLEXPRESS -d xxxx -q "exec dbo.xxx" -o c:\temp\TEMP_%dat%.txt

Merci par avance pour votre aide!
A voir également:

1 réponse

jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
Bonjour,

C'est que probablement le programme bdd est toujours en cours. Y a t-il un quit ou exit (suivant la bdd) en fin du code sql qui génère le fichier de sortie.

Cdlt
0
zabou511 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour !
Tout d'abord merci pour la réponse.
en fin de code il n'y a ni quit ni exit mais même en ajoutant cela, cela ne règle pas le problème.
Je vois qu'en lançant manuellement mon bat, il y a ensuite un 1> qui se met et je pense qu'il manque qqchose...


Merci par avance !
0
jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > zabou511 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Oui tu es en mode commande à l'interieur du programme sqlcmd. Donc il n'est pas terminé, bloquant le fichier de sortie.
Il faut trouver la commande de sortie (quit, exit, bye, ...) et la mettre en fin de ton code sql
0
zabou511 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Re!
Même en mettant cela à la fin de mon SQL cela ne change rien. Dans ma procédure stockée, je fais un select * à la fin pour avoir les informations qui ont été insérée en base. Ensuite mon -o dans ma commande permet de générer le log avec ces informations. C'est peut être cela qui "merdouille"...
Je ne vois pas comment récupérer si il y a eu une erreur lors de l'exécution de ma procédure stockée. Un autre idée peut être?
0
jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > zabou511 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
et si tu lances la commande à la main dans l'appli de cmd sql ?

tu n'as même pas donné le type de la bdd, ni le code que tu lances
0
zabou511 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
alors si je lance à la main le .bat, il faut que je fasse exit ensuite pour que cela ferme la fenêtre.

Je n'ai pas mis ma procédure car elle est assez longue.

En fait je suis dans une base SQL Server. Je fais un bulk insert d'un fichier csv dans des tables temporaires et ensuite, en fonction de certains critères, j'ajoute ces informations dans ma table définitive.

Merci !!!! :-)
0