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

MS SQL Server Discussion :

[SQLSRV2000] Package DTS et Batch


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable outils métier VIGS (Veolia)
    Inscrit en
    Septembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable outils métier VIGS (Veolia)
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 80
    Par défaut [SQLSRV2000] Package DTS et Batch
    Bonjour,

    Est-il possible dans un package DTS de retourner un code d'erreur vers un batch ms-dos chargé de lancer ce package ?

    J'aurai besoin de développer une interface de chargement d'un fichier plat avec traitement à l'appui (création, suppression et mise à jour).
    De nombreux cas peuvent se produire durant les traitements.

    Le lancement du package DTS sera géré par un scheduler externe. Le lancement se fait d'une manière comparable à un batch ms-dos.

    Il me faut donc pouvoir retourner un code d'erreur en retour au lancement du batch.

    Actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        @Echo Off 
        Setlocal 
     
        Rem Code retour Global 
        Set /A glob_code = 0 
     
        Rem Execution du package DTS depuis le serveur SQl
     
        DTSRUN /S serveur /U sa /P pass /N package_name
        Rem traitement du code retour
     
        If %errorlevel% EQU 0 (
            Echo Ok
        ) else (
            Echo Nok
     
        Set /A glob_code = 1
        )
     
        Rem Sort avec le code de retour global 
        Exit /B %glob_code%
     
        Endlocal
    Mais la seule information en retour que j'ai, c'est si l'exécution du package a réussi ou non.

    Comment puis je faire dans DTS pour modifier le code de retour ???

    Code de retour 20 = Erreur programme
    Code de retour 0 = tout va bien
    Code de retour 10 = Fichier d'entrée absent
    Code de retour ... = ....


    A l'afus de toute piste si cela est faisable.

    Merci pour vos réponses.

    Cdlt,
    Gilles

  2. #2
    Membre confirmé
    Homme Profil pro
    Responsable outils métier VIGS (Veolia)
    Inscrit en
    Septembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable outils métier VIGS (Veolia)
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 80
    Par défaut
    Je devrais peut-être prendre le problème à l'envers et voir plutôt le lancement d'une procédure en T-SQL appelant un package DTS. Ce package écrirait alors le résultat des traitements dans une table de log, la procédure T-SQL lirait cette table et renverrait un code de retour au shell.

    Il me reste à trouver dans ce cas comment renvoyer un code de retour au shell depuis une procédure en T-SQL ...

    Des avis sur la question ?

  3. #3
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Pourquoi ne pas lancer le job avec un script (vbs, Perl ou Ruby par exemple), ensuite récupérer le statut avec sp_help_jobhistory (ou dans la table msdb.dbo.sysjobhistory), via une commande ADO ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable outils métier VIGS (Veolia)
    Inscrit en
    Septembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable outils métier VIGS (Veolia)
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 80
    Par défaut
    En suivant cette piste cela donnerait un script batch en T-SQL exécuté via oSql.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    @Echo Off 
    Setlocal 
     
    Rem Code retour Global 
    Set /A glob_code = 0 
     
    Rem Execution du package DTS depuis le serveur SQl
     
    osql -S localhost -U user -P pass -d database -i test.sql
    Rem traitement du code retour
     
    If %errorlevel% EQU 0 (
    	Echo Ok
    ) else (
    	Echo Nok
     
    Set /A glob_code = 1
    )
     
    Rem Sort avec le code de retour global 
    Exit /B %glob_code%
     
    Endlocal
    et le script en T-SQL pour un exemple très simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    declare @toto numeric;
     
    SET @toto = 5;
     
    EXIT(SELECT @toto);
    Pour le lancement du package DTS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec master..xp_cmdshell '_____________'
    Mais peut-être y-a-t-il plus simple ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Responsable outils métier VIGS (Veolia)
    Inscrit en
    Septembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable outils métier VIGS (Veolia)
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 80
    Par défaut
    Bonjour rudib,

    et merci pour ta réponse.

    Comment puis-je alors intégrer mes propores codes de retour en fonction de ce qui s'est passé dans mon package DTS ?

  6. #6
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Je n'ai jamais essayé. Mais il y a des possibilités intéressantes pour gérer les erreurs des packages via des événements, en vb par exemple. Regarde ici pour une intro : http://support.microsoft.com/kb/240221

    Ca vaut la peine de passer en SSIS...

  7. #7
    Membre confirmé
    Homme Profil pro
    Responsable outils métier VIGS (Veolia)
    Inscrit en
    Septembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable outils métier VIGS (Veolia)
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 80
    Par défaut
    Ok merci. Je vais voir ca pour l'intégrer dans un script vbs.
    Ca doit être faisable.

    Merci pour ton aide et encore une bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Éditeur de tâche d'exécution de package DTS
    Par boumab dans le forum SSIS
    Réponses: 3
    Dernier message: 09/06/2011, 11h12
  2. Package DTS vers sql server 2005
    Par maserati dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 06/09/2007, 14h32
  3. Packager des projets batch
    Par rodbeck dans le forum Maven
    Réponses: 3
    Dernier message: 16/07/2007, 13h18
  4. [SQL2k] Execution d'un package DTS via un job
    Par zebulon90 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/06/2006, 15h00
  5. [SQL Server 2000][DTS][NET 1.1] Exécution d'un package DTS
    Par aldbaran dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/02/2006, 11h26

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