Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à toutes et tous,
Sur mon projet nous sommes en PB10.5.
Je rencontre le problème suivant : nous avons un exe batch de l'application qui sert à générer des fichiers d'extractions de données en BDD dans un répertoire paramétrable. Ce batch (edi.exe) peut être exécute manuellement ou automatiquement via un ordonnanceur.
Lors de l’exécution du batch nous écrivons dans un fichier de log les exécutions du batch (heure de début, fichier générés, lignes traitées, heure de fin). Ci-dessous un exemple :
24/08/2018 14:40:21 - Début du traitement #FIN ----------------------------------------------------- 24/08/2018 14:41:01 - Objets terminé. Nbre ECM traité(s) : 1. Nbre objets : 2179 Tracking terminé. Nbre ECM traité(s) : 1. Nbre tracking : 19.Techniques terminé. ECM traité(s) : 1. Nbr traités : 2.Finances terminé. ECM traité(s) : 1. Nbr traités : 45 #FIN ----------------------------------------------------- 24/08/2018 14:41:01 - Fin du traitement #FIN -----------------------------------------------------
Le problème que je rencontre c'est que le batch n'écrit dans ce fameux fichier de log que lors d'une exécution manuelle, quand il passe par l'ordonnanceur Windows il n'y a pas d'écriture (le batch est lancé tout les jours à 4h du matin). Par contre en automatique les extractions sont bien générés dans la nuit.
Avez-vous une idée pour corriger ce problème ?
Pour info :
- Version PB : PB10.5
- Serveur ou est déployé le batch : Windows Server 2008 R2 Standard
- Le batch est lancé par l'ordonnanceur de Windows Serveur avec comme utilisateur : Administrateur qui a tous les droits (écriture, lecture, exécutions)
En vous remerciant par avance pour les réponses.
Hors ligne
Bonjour,
Dans les paramétrages de la tâche, il te suffit de spécifier un compte utilisateur (qui a les droits en écriture sur le fameux répertoire de log) au lieu et place du compte système par défaut.
Hors ligne
Bonjour,
Merci pour la première réponse, mais justement c'est le cas l'ordonnanceur Windows Serveur lance le .exe avec l'utilisateur admin qui a tous les drotis sur le répertoire de log, l'exe et le fichier de log...
Ce problème est bizarre car en manuel tout fonctionne normalement le fichier de log du batch est bien alimenté.
Hors ligne
Bonjour,
Effectivement, j'ai lu un peu vite ton post. Tu l'avais précisé.
En fait le problème depuis l'introduction de Vista (et Windows server 2008), c'est l'UAC (User Account Control ) en fait tu n'es jamais réellement administrateur sans faire une demande d'élévation de privilège.
Il me semble que c'est seulement à partir de la version 11 de PB que l'on peut choisir dans les options de compilation dans l'onglet security les options de "manifest" et le niveau d’exécution de ton appli pour être compatible avec l'UAC.
Dans le cas contraire, ton programme s’exécute sans privilège et les répertoires sont virtualisés vers C:\Users\<name>\AppData\Local\VirtualStore.
Tu peux vérifier que ton journal de log ne se trouve pas dans le virtualstore par hasard ?
Tu peux aussi essayer pour tester de mettre un droit contrôle total pour tous les utilisateurs sur le répertoire des logs ?
J’essaierai également de mettre mon programme en mode de compatibilité XP pour voir (permettre d'écrire en tant qu'administrateurs sans élévation de privilège).
Hors ligne
Bonjour,
Je te remercie pour les infos je vais vérifier ça aussi.
En fait je me rends compte que je suis pas clair dans mon explication...
Le fichier de log existe bien dans le bon répertoire, sauf que je n'ai aucune logs des lancements automatiques (ordonnanceur Windows), par contre un utilisateur lance le batch manuellement pas de soucis l'écriture se fait bien dans le fichier de log existant (Cf. exemple de log dans mon premier message).
Ce qui est bizarre c'est qu'en BDD j'ai bien la trace des logs du lancement automatiques (j'écris une log physique dans un fichier et la même log en BDD par sécurité), et que le lancement automatique s'exécute parfaitement, puisque mes fichiers d'extractions sont généré.
En fait mon vrai soucis vient vraiment du fait que l'écriture ne se fait pas par l'ordonnanceur et je ne vois pourquoi l'exe n'arrive pas à écrire dans le fichier en auto alors qu'en manuel aucun soucis.
Hors ligne