Ligne commande windows - tâche planifiée

Fermé
zabou511 Messages postés 8 Date d'inscription vendredi 1 février 2019 Statut Membre Dernière intervention 2 avril 2019 - 14 févr. 2019 à 08:32
zabou511 Messages postés 8 Date d'inscription vendredi 1 février 2019 Statut Membre Dernière intervention 2 avril 2019 - 14 févr. 2019 à 16:36
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 40449 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 14 novembre 2024 9 417
14 févr. 2019 à 11:38
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 vendredi 1 février 2019 Statut Membre Dernière intervention 2 avril 2019
14 févr. 2019 à 12:00
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 40449 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 14 novembre 2024 9 417 > zabou511 Messages postés 8 Date d'inscription vendredi 1 février 2019 Statut Membre Dernière intervention 2 avril 2019
14 févr. 2019 à 12:28
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 vendredi 1 février 2019 Statut Membre Dernière intervention 2 avril 2019
14 févr. 2019 à 15:22
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 40449 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 14 novembre 2024 9 417 > zabou511 Messages postés 8 Date d'inscription vendredi 1 février 2019 Statut Membre Dernière intervention 2 avril 2019
14 févr. 2019 à 15:48
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 vendredi 1 février 2019 Statut Membre Dernière intervention 2 avril 2019
14 févr. 2019 à 16:36
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