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

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 153
    Points : 19 954
    Points
    19 954

    Par défaut SAS plante dans un batch et bloque les autres demandes d'exécutions, que faire ?

    Bonjour à tous et merci de votre temps et de votre aide.

    Avant toute chose, je ne connais presque rien à SAS et mon équipe connait assez peu les rouages internes de SAS donc s'il vous plait détaillez pas à pas dans vos réponses.
    Et il est probable que je n'utilise pas les bons termes pour désigner les éléments de SAS.

    Nous rencontrons un problème assez ennuyant avec des tâches planifiées qui appellent des scripts VB Script qui eux-mêmes appellent des projets SAS (fichier .egp).
    Parfois le projet SAS plante lors de l'exécution et SAS semble rester bloqué là. Le script semble ne se rendre compte de rien et poursuit sa tâche comme si le projet SAS avait fini normalement.
    Le problème est que SAS reste dans un état qui empêche les autres projets SAS de s'exécuter, entrainant une cascade d'erreur pour les autres tâches planifiées.

    Ici un exemple de script :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Dim app         ' As SASEGuide.Application
     
    Call dowork
     
    'shut down the app
    If not (app Is Nothing) Then
        app.Quit
        Set app = Nothing
    End If
    Code VBA : 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Sub dowork()
        On Error Resume Next
        '----
        ' Start up Enterprise Guide using the project name
        '----
        Dim prjName     ' As String
        Dim prjObject   ' As SASEGuide.Project
        Dim containerName     ' As String
        Dim containerObject   ' As SASEGuide.Container
        Dim containerColl     ' As SASEGuide.ContainerCollection
     
        prjName = "\\MonServeur\MonChemin\MonProjetSAS.egp" ' Project Name
        containerName = "Flux de processus" ' Container Name
     
        Set app = CreateObject("SASEGObjectModel.Application.6.1")
        If Checkerror("CreateObject") = True Then
            Exit Sub
        End If
     
        Set prjObject = app.Open(prjName,"")
        If Checkerror("App.Open") = True Then
            Exit Sub
        End If
     
     
        '-----
        'Get The Container Collection and Object
        '-----    
        Set containerColl = prjObject.ContainerCollection
        If Checkerror("Project.ContainerCollection") = True Then
            Exit Sub
        End If
     
        Dim i       ' As Long
        Dim count   ' As Long
        count = containerColl.count
        For i = 0 To count - 1
            Set containerObject = containerColl.Item(i)
            If Checkerror("ContainerCollection.Item") = True Then
                Exit Sub
            End If
     
            If (containerObject.Name = containerName) Then
                Exit For
            Else
                Set containerObject = Nothing
            End If
        Next 
     
        If not (containerObject Is Nothing) Then
            '----
            ' Run the Container
            '----
            containerObject.Run
            If Checkerror("Container.Run") = True Then
                Exit Sub
            End If               
        End If
     
        '-----
        ' Save the new project
        '-----
        prjObject.Save
        If Checkerror("Project.Save") = True Then
            Exit Sub
        End If
     
        '-----
        ' Close the project
        '-----
        prjObject.Close
        If Checkerror("Project.Close") = True Then
            Exit Sub
        End If
     
    End Sub
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function Checkerror(fnName)
        Checkerror = False
     
        Dim strmsg      ' As String
        Dim errNum      ' As Long
     
        If Err.Number <> 0 Then
            strmsg = "Error #" & Hex(Err.Number) & vbCrLf & "In Function " & fnName & vbCrLf & Err.Description
            'MsgBox strmsg  'Uncomment this line if you want to be notified via MessageBox of Errors in the script.
            Checkerror = True
        End If
     
    End Function

    Si j'ai bien compris, l'exécution se produit ici à l'instruction

    mais il est possible que la ligne Set prjObject = app.Open(prjName,"") soit importante aussi.

    Mes questions sont les suivantes :
    1. Y-t'il un moyen de s'assurer que SAS se ferme si une erreur survient quelle que soit cette erreur ?
      J'ai trouvé quelque chose ici (http://support.sas.com/documentation...a000993436.htm) à propos de ERRORABEND mais cela semble relié à des fichiers .sas pas .egp donc je ne sais pas si cela s'applique.
      Et en plus c'est pour la version 9.2 or nous utilisons les versions 6 et 7.
    2. Y-a-t'il quelque par de la doc sur les paramètres qu'on peut passer à l'ouverture ou/et à la demande d'exécution ?


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  2. #2
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    juillet 2013
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2013
    Messages : 434
    Points : 1 013
    Points
    1 013
    Billets dans le blog
    4

    Par défaut

    Bonjour,

    Le souci, ce n'est pas vraiment SAS mais le moyen de le lancer. Dans SEG il y a la possibilité de générer le code SAS correspondant au projet. Génère ce code et lance-le cette fois-ci avec sas.exe (tu trouveras la syntaxe facilement), soit au travers d'un .bat, soit avec autre chose de compatible avec Windows.
    Si j'ai bon, ça devrait se passer mieux.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 153
    Points : 19 954
    Points
    19 954

    Par défaut

    Merci Stackware de ta réponse.

    Hélas, cette solution ne semble pas disponible pour les versions 6 et 7 que nous utilisons.

    Il n'y a pas de fichier Sas.exe pour ces versions.

    En bricolant nous avons été capable d'ouvrir le projet mais pas de l'exécuter.

    Y-at'il une astuce qui nous aurait échapée ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    juillet 2013
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2013
    Messages : 434
    Points : 1 013
    Points
    1 013
    Billets dans le blog
    4

    Par défaut

    Salut,

    En fait il y a un sas.exe sur le serveur. Il faut générer le code sas, puis l'ordonnancer sur le serveur, ou bien le lancer sur une session sur le serveur (windows ou Linux). Il faut demander à l'Architecte ou à celui qui a installé la plateforme, et lui demander comment faire.
    Il n'y a que 2 façons de fonctionner:
    Guide est sur le PC et SAS aussi => sas.exe est sur le pc et c'est lançable directement
    Guide est sur le PC et SAS sur un serveur => sas ou sas.exe sont à lancer sur le serveur pour que ça fonctionne. Ok?

Discussions similaires

  1. [XL-2013] Ajouter une date dans une cellule par calendrier et autres demandes
    Par Palestinian dans le forum Excel
    Réponses: 1
    Dernier message: 12/11/2014, 22h21
  2. Comment utiliser les resultats d'un python script dans un batch file ?
    Par Battosaiii dans le forum Général Python
    Réponses: 2
    Dernier message: 03/10/2008, 12h30
  3. Données SQL dans un tableau pas comme les autres
    Par Jeoffrey54 dans le forum PHP & MySQL
    Réponses: 5
    Dernier message: 29/06/2008, 11h32
  4. Fonction garde les donnés des call précédent.. que faire?
    Par tux94 dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 02/04/2008, 14h56
  5. Réponses: 6
    Dernier message: 21/03/2005, 13h22

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