Menu

Ligne commande windows - tâche planifiée

Messages postés
7
Date d'inscription
vendredi 1 février 2019
Dernière intervention
14 février 2019
- - Dernière réponse : zabou511
Messages postés
7
Date d'inscription
vendredi 1 février 2019
Dernière intervention
14 février 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!
Afficher la suite 

Votre réponse

1 réponse

Messages postés
24524
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 février 2019
8926
0
Merci
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
zabou511
Messages postés
7
Date d'inscription
vendredi 1 février 2019
Dernière intervention
14 février 2019
-
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 !
jee pee
Messages postés
24524
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 février 2019
8926 > zabou511
Messages postés
7
Date d'inscription
vendredi 1 février 2019
Dernière intervention
14 février 2019
-
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
zabou511
Messages postés
7
Date d'inscription
vendredi 1 février 2019
Dernière intervention
14 février 2019
-
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?
jee pee
Messages postés
24524
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 février 2019
8926 > zabou511
Messages postés
7
Date d'inscription
vendredi 1 février 2019
Dernière intervention
14 février 2019
-
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
zabou511
Messages postés
7
Date d'inscription
vendredi 1 février 2019
Dernière intervention
14 février 2019
-
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 !!!! :-)
Commenter la réponse de jee pee