IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Exécuter un job depuis un script DOS et attendre la fin avant de rendre la main


Sujet :

Développement SQL Server

  1. #1
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut Exécuter un job depuis un script DOS et attendre la fin avant de rendre la main
    Bonjour

    Sous SQL Server 2005, j'ai un job que je veux lancer depuis un script DOS, j'utilise pour cela la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    osql -E -Q"exec msdb.dbo.sp_start_job 'mon_job'"
    Mais le problème c'est que ça me rend tout de suite la main en me disant "job démarré" alors que j'aurais voulu que ça ne me rende la main que quand le job soit terminé, afin d'ordonnancer d'autres traitements derrière

    Savez-vous s'il existe un moyen de faire ça ?

    Merci d'avance
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    sp_start_job va simplement vous lancer un job et vous rendre la main.

    A vous de vérifier que le job sql soit terminé avant de continuer votre traitement. Vous pouvez faire cela en interrogant les vues systèmes adéquates dbo.sysjobactivity et dbo.sysjobs.

    ++

  3. #3
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Pourquoi ne pas tout effectuer depuis le job lui meme ?

  4. #4
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Citation Envoyé par Ptit_Dje Voir le message
    Pourquoi ne pas tout effectuer depuis le job lui meme ?
    Parce que je veux encapsuler le lancement du job dans un .bat qui exécute aussi d'autres commandes OS.
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    La solution d'encapsuler vos commandes DOS dans le job SQL serveur ne vous convient pas ?
    Ca vous permettrais d'avoir un chainage et un scheduling directement...
    Si c'est un probleme de droits - peut etre pouvez-vous utiliser un proxy.

    Si cela ne fonctionne pas, vous allez devoir bidouiller comme l'a dit Mikedavem pour verifier la fin d'execution du job avec les vue systemes.

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2008
    Messages : 100
    Points : 132
    Points
    132
    Par défaut
    Sinon, avec Powershell vous pourrez avec Invoke-SQLCmd lancer l'éxécution de la requête et récupérez le prompt à la fin de l'éxécution

  7. #7
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Citation Envoyé par Ptit_Dje Voir le message
    La solution d'encapsuler vos commandes DOS dans le job SQL serveur ne vous convient pas ?
    Ca vous permettrais d'avoir un chainage et un scheduling directement...
    Si c'est un probleme de droits - peut etre pouvez-vous utiliser un proxy.

    Si cela ne fonctionne pas, vous allez devoir bidouiller comme l'a dit Mikedavem pour verifier la fin d'execution du job avec les vue systemes.
    C'est un script DOS complexe qui effectue plusieurs actions sur plusieurs serveurs différents (avec "psexec") dont des arrêts de services applicatifs, et dont l'une des étapes est un backup du SQL Server
    C'est donc impossible (ou en tout cas trop complexe) de tout gérer via un job SQL Server.
    Et puis faire une boucle qui regarde toutes les X minutes si mon job est fini ou pas, ça devient tout de suite complexe ...

    Au pire je pense que je vais faire un copier/coller du code de mon job dans un script SQL et l'appeler via "osql -i mon_script.sql", au moins je suis sûr qu'il me rendra la main seulement quand l'exécution des commandes SQL est terminée

    Merci pour vos réponses
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

Discussions similaires

  1. Exécuter une requête depuis un script sh
    Par Decon dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 25/05/2011, 20h42
  2. [SQL2005][TSQL] Exécuter fichier sql depuis un script
    Par mbsl1 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/11/2008, 12h19
  3. Réponses: 4
    Dernier message: 05/04/2007, 03h10
  4. Réponses: 5
    Dernier message: 13/02/2006, 14h45
  5. [Dos] Lancer une commande dos sans attendre la fin
    Par MrEddy dans le forum Windows
    Réponses: 4
    Dernier message: 09/06/2005, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo