Bonjour,
Je suis sous ASE et je cherche à récupérer dans une table ou dans quelques exports que ce soit le résultat d'appels système comme sp_depends par exemple, pour des traitements ultérieurs.
Merci
Bonjour,
Je suis sous ASE et je cherche à récupérer dans une table ou dans quelques exports que ce soit le résultat d'appels système comme sp_depends par exemple, pour des traitements ultérieurs.
Merci
Il y a vraiment toutes sortes de solutions (sauf récupérer les données directement dans une tables - ça c'est un peu plus compliqué).
Faudrait connaitre l'environnement - p.ex. c'est du shell Unix, ou...
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Environnement windows (Batch Dos) + Isql.
Quels genres de solution voyez vous ? Car il ne me semble pas qu'il soit possible de récupérer la sortie d'un appel système directement en T-SQL, en créant une Procédure stockée ou autres :/
hello
Il faudrait préciser un peu plus ce que vous voulez faire. De plus je ne comprends pasSi le but est de récupérer le résultat d'appels de procs stockées dans une table, il est possible de créer des tables proxy basées sur des procédures stockées. Il y a un ou deux posts sur ce forum relatifs à ça.Car il ne me semble pas qu'il soit possible de récupérer la sortie d'un appel système directement en T-SQL, en créant une Procédure stockée ou autres
Il est également possible de faire unet de mettre le code SQL dans le .bat, en enlevant les headers, le row count etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sp_helptext la_proc_qui_m_interesse
Emmanuel T.
Je veux faire exactement ce que vous pensez Mais non pas avec des procédures stockées, mais avec des procédures systèmes.
Par exemple récupérer le résultat d'un sp_depends TableName ou d'un sp_helprotect UserName, rédiriger leur sortie vers une table, une vue ou quelque chose de "manipulable".
Une proc stockée ou une proc "système" c'est pas très differend, donc l'utilisation d'une table proxy mappée sur la RPC peut marcher dans certains cas.
Le problème c'est si la proc renvoie plusieurs result set (comme p.ex. sp_help).
Le plus simple est probablement d'écrire un peu de code, p.ex. en VB (ou perl, shell, etc) qui exécute la/les proc(s) et extrait les informations pertinentes pour faire un traitement plus avancé.
Ou alors lire la source des procs systèmes que tu veux utiliser, et en extraire la partie dont tu as besoins pour insérer les données voulues...
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Effectivement les procs systèmes que j'utilise renvoient plusieurs Resultsets.
J'ai écrit un batch qui lance un Isql distant mais l'output ne me convient pas, je récupère toutes les entêtes, toutes les colonnes, tous les éléments d'interface (des tirets entre les noms de colonnes et les datas) etc.
Il me semble complexe de parser correctement ce fichier ...
Pour les sources des procs systèmes, il me semble qu'elles se trouvent dans la base sybsystemprocs, je vais regarder ça.
Pour info, on peut supprimer les entêtes avec -b pour isql...
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Merci, mon fichier d'output est déjà un peu plus convenable, cependant il reste souvent des dizaines d'espaces vides entre les données, et quelquefois le séparateur n'est pas inclus entre deux champs.
Exemple :
............;Admin..............;............4578.....;....R&D;
...............Mission.......................Paris...........
Ce genre de chose ...
J'aimerai avoir un :
Admin;4578;R&D;Mission;Paris
Merci.
il faut également utiliser l'option -w pour la largeur de la sortie, par ex : -w255
Emmanuel T.
Merci on se rapproche de ce que je voudrai Malheureusement il y a toujours des dizaines d'espace entre chaque colonne dans le fichier texte, si bien qu'une ligne dans la BDD se retrouve en plusieurs lignes dans le ficher texte. Ce qui est assez gênant pour Excel qui interprête chaque saut de ligne comme une nouvelle observation ...
Est-ce qu'il est possible de voir la requête ?
merci
Emmanuel T.
Alors :
J'ai un batch qui lance cette commande :
Et le script.sql donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part isql -U monNom -P monPass -S monServeur -D maBase -i script.sql -o Journal.log -b -w150 -s;
Mon objectif étant de balancer à helprotect non pas un mais une liste de User et qu'il me mette dans un fichier texte/CSV/etc. le résultat de la requête. Mais bon ça c'est un autre problème que je verrais plus tard
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2sp_helprotect unUser GO
Le mieux que j'arrive à faire:
Et de passer un -w grand (1024 p.ex.).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 set nocount on set proc_return_status off exec sp_helprotect <user> go
Les blancs dans la ligne ne sont pas vraiment gérables avec les outils simples sous Windows (à ma connaissance - en shell Unix on pourrait s'amuser avec cut, sed, etc pour cleaner tout cela...)
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Merci, je n'ai plus de "parasites" dans mon fichier texte mais une observation se trouve toujours sur plusieurs lignes différentes (le -w n'est plus pris en compte à partir d'une certaine valeur) car il existe beaucoup trop d'espaces entre chaque attribut.
Quelle version d'isql (isql -v) ?
Normallement on peut mettre des valeurs de -w très grandes (1000 et plus).
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Merci bien pour vos réponses, j'ai contourné le problème en important les données depuis Access via un script VBA
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager