PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 07-05-2013 09:21:56

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Lister les DataBases d'un Serveur

Bonjour

dans mon application je propose à l'utilisateur de selectionner un fichier sybase.ini

a partir de ce fichier, j'affiche dans une liste box, les serveurs référencés dans le .INI

l'utilisateur peut alors sélectionner le serveur de données de son choix

je voudrai pouvoir afficher dans une autre liste les databases existantes sur le serveur sélectionné

Ainsi l'utilisateur choisira sa database et renseignera les identifiants de connexion


Quelqu'un a t il déjà fait cela ? Est ce possible ?

j'ai pensé à interroger la table systeme sysdatabases mais j'aimerai une autre solution si possible

merci d'avance

Hors ligne

 

#2 07-05-2013 12:51:58

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Lister les DataBases d'un Serveur

Bonjour,

Sur les questions BDD, toujours indiquer SGBDR et version...

Plusieurs pistes :
* comme les serveurs : en dur dans ton .INI
* avec une table système
* avec une table dédiée à maintenir


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 07-05-2013 13:04:21

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Re: Lister les DataBases d'un Serveur

BONJOUR

EFFECTIVEMENT

BDD SYBASE 12.5 ET 15 SUR CERTAINS POSTES

PB 11.5

PAR RAPPORT AUX 3 SOLUTIONS
- LA TABLE A MAINTENIR C PAS POSSIBLE CAR MON APPLI DOIT SE GREFFER SUR UN EXISTANT QUI NE DOIT PAS ETRE MODIFIEE

- LE .INI CE SERAIT LE PLUS SIMPLE MAIS LA SOLUTION DOIT ETRE EVOLUTIVE POUR EVITER DE MODIFIER LE .INI A CHAQUE OCCASION

- LA TABLE SYSTEME OUI MAIS LAQUELLE ET COMMENT LUTILISER AVEC PB ?

Hors ligne

 

#4 07-05-2013 13:19:12

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Lister les DataBases d'un Serveur

:SMILEY_ANTI_CAPS_LOCK:

Si tu veux de l'évolutif simple, c'est sur c'est pas terrible dans le INI, ni dans l'EXE...

Pour les table systèmes, c'est pas terrible non plus car il faut en principe des privilèges élevés, pas sur que les utilisateurs les aient...
Tu pourrais toujours créer une vue accessible à l'utilisateur sur ces tables systèmes. (ou alors cette vue existe dans ASE)

Après dans PB, c'est juste une DS/DW avec la requête qui va bien.


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 07-05-2013 13:39:01

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Lister les DataBases d'un Serveur

Bonjour,

En complément et même remarque qu'erasorz, Avec une requête dans une datastore/datawindow et la requête :

Code: sql

select name from master.dbo.sysdatabases


Pour faire cela, il faut effectivement avoir établi une connexion sur la base master !!

Je suppose également qu'il va falloir que tu filtres les bases de données uniquement compatible avec ton application, élimination master, model, sybsystemprocs, tempdb ...

Ensuite, je suppose qu'il va falloir analyser le schéma de chaque base de données (ex : tables disponibles) pour déterminer s'il s'agit bien d'une base de données utilisable avec l'application.

Hors ligne

 

#6 07-05-2013 14:07:27

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Lister les DataBases d'un Serveur

Salut, qques pistes :

liste des serveurs :
commande "DOS" dblocate

liste des DB  sur un serveur :
select db_name( number ) from sa_db_list();


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#7 07-05-2013 15:02:56

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Re: Lister les DataBases d'un Serveur

merci captain flam

mais dans "select db_name( number ) from sa_db_list()" a quoi correspond le <number> ?

Hors ligne

 

#8 07-05-2013 15:17:42

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Lister les DataBases d'un Serveur

remypb a écrit:

merci captain flam

mais dans "select db_name( number ) from sa_db_list()" a quoi correspond le <number> ?

très bonne question,

je t'avouerai que je ne sais pas trop, je dirais que c'est un argument à la fonction pour obtenir les infos des DB (genre Select fct_qui_me_renvoie_le_nom_de_la_db_numero( 1 ) ) mais par contre je sais pas d'où il va tirer cette valeur

ce que je sais c'est que tu le tapes comme ça, tel quel, verbatim et ça fonctionne (chez moi en tt cas)


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#9 07-05-2013 15:43:11

FMolinas  
Membre Geek
Lieu: Lyon
Date d'inscription: 12-06-2007
Messages: 87
Pépites: 97
Banque: 6,435,474,948,567

Re: Lister les DataBases d'un Serveur

Depuis une connexion sur n'importe quelle base du serveur, la procédure système "sp_helpdb" sans paramètre devrait faire ton bonheur.
En bonus, la documentation dit que c'est exécutable par tout le monde.
Edit : Il y a aussi "sp_databases", avec une liste moins verbeuse. Et c'est également exécutable par un utilisateur sans droits particuliers.

Dernière modification par FMolinas (07-05-2013 15:55:41)

Hors ligne

 

#10 07-05-2013 16:28:16

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Lister les DataBases d'un Serveur

FMolinas a écrit:

Depuis une connexion sur n'importe quelle base du serveur, la procédure système "sp_helpdb" sans paramètre devrait faire ton bonheur.
En bonus, la documentation dit que c'est exécutable par tout le monde.
Edit : Il y a aussi "sp_databases", avec une liste moins verbeuse. Et c'est également exécutable par un utilisateur sans droits particuliers.

Commet doit on exécuter ça depuis une console SQL ?

j'ai essayé de diverses façons et j'obtiens tjrs un message d'erreur genre  "Vous avez tenté d'utiliser une fonctionnalité Transact-SQL qui n'est pas supportée dans SQL Anywhere."


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#11 08-05-2013 09:00:42

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Lister les DataBases d'un Serveur

rincevent a écrit:

Commet doit on exécuter ça depuis une console SQL ?

j'ai essayé de diverses façons et j'obtiens tjrs un message d'erreur genre  "Vous avez tenté d'utiliser une fonctionnalité Transact-SQL qui n'est pas supportée dans SQL Anywhere."

Pareil ici. Apparemment c'est une fonctionnalité ASE, pas ASA.

Au passage,

rincevent a écrit:

liste des serveurs :
commande "DOS" dblocate

J'ai appris un truc là , ça fonctionne bien pour les serveurs ASA.


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#12 08-05-2013 09:10:50

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Lister les DataBases d'un Serveur

Ha je suis bien content de t'avoir appris un truc pour une fois que c'est dans ce sens la

Edit : Pourquoi mon message se poste en double ça je comprends pas ?

Dernière modification par rincevent (08-05-2013 09:11:11)


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#13 13-05-2013 09:15:46

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Re: Lister les DataBases d'un Serveur

Bonjour

j'ai essayé les 2 commandes sp_helpdb et sp_databases, effectivement ca marche mais il faut que je sois connecté sur une base

ce que je souhaiterai c'est de lister les databases d'uin serveur que je passerai en paramètre ... Comme je l'ai dit dans mon 1er post, l'utilisateur choisit un serveur dans une liste et je veux afficher les DB de ce serveur

si c'est pas possible l'utilisateur devra saisir le nom de la DB en même temps que les identifiants

merci d'avance

Hors ligne

 

#14 13-05-2013 09:44:49

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Lister les DataBases d'un Serveur

Tu peux utiliser un utilisateur "générique" par serveur qui aurait accès à sp_databases pour avoir la liste des bases et ensuite connecter le "vrai" utilisateur.


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#15 13-05-2013 09:58:29

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Re: Lister les DataBases d'un Serveur

ok mais cet utilisateur générique je dois le créer sur le serveur ou il existe déjà ?
si il existe comment je l'identifie comment je le retrouve ?
si je dois le créer faut il que je demande l'autorisation au DBA ou est ce transparent et sans conséquence pour le serveur ?

Hors ligne

 

#16 13-05-2013 14:29:17

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Lister les DataBases d'un Serveur

il faut demander la création d'un utilisateur n'ayant aucun droit (puisque sp_databases et/ou sp_helpdb sont accessibles par tout le monde d'après le message de FMolinas)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#17 13-05-2013 16:09:20

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Lister les DataBases d'un Serveur

remypb a écrit:

Bonjour

j'ai essayé les 2 commandes sp_helpdb et sp_databases, effectivement ca marche mais il faut que je sois connecté sur une base

ce que je souhaiterai c'est de lister les databases d'uin serveur que je passerai en paramètre ... Comme je l'ai dit dans mon 1er post, l'utilisateur choisit un serveur dans une liste et je veux afficher les DB de ce serveur

si c'est pas possible l'utilisateur devra saisir le nom de la DB en même temps que les identifiants

merci d'avance

tu as jeté un oeil aux options de dblocate ?

dblocate -dv -s <nom du serveur>
devrait te donner la liste des DB exécutées sur <nom du serveur>

jete un oeil aux options y en a pas bcp et je pense qu'il y a ce qu'il te faut.


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#18 14-05-2013 16:01:56

FMolinas  
Membre Geek
Lieu: Lyon
Date d'inscription: 12-06-2007
Messages: 87
Pépites: 97
Banque: 6,435,474,948,567

Re: Lister les DataBases d'un Serveur

Vu les versions de BDD annoncées par remypb, j'avais supposé que le SGBD est ASE et pas ASA. D'où confusion... Je pense toujours qu'il s'agit bien d'ASE, peux-tu confirmer ? (Et au passage, je note aussi l'existence de l'utilitaire ASA dblocate, je ne connaissais pas.)

Je ne sais pas comment lister les bases d'un serveur ASE sans s'y connecter. Et en termes de sécurité du système d'information, je trouverais ça choquant... -> Ce n'est à mon avis pas possible.
Il te faudra donc avoir une connexion, idéalement un utilisateur sans aucun droit particulier. Tu n'as sans doute pas la possibilité d'ajouter un compte toi_même (il faut un droit sa ou sso pour exécuter sp_addlogin) vu que tu indiques avoir un DBA dans ton entourage. Il faudra lui demander cette ouverture de compte.

Une fois en possession de ce compte, il suffira de faire une connexion temporaire automatique le temps de récupérer le nom des bases utilisables. Il faudra aussi comme le suggérait buck supprimer de la liste les bases système qui ne sont pas utilisables pour un usage applicatif : master, model, sybsystemprocs, tempdb, dbccdb, sybsecurity, sybsystemdb, pubs2, pubs3, dbccdb.

Hors ligne

 

#19 14-05-2013 16:06:33

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Lister les DataBases d'un Serveur

FMolinas a écrit:

Je ne sais pas comment lister les bases d'un serveur ASE sans s'y connecter. Et en termes de sécurité du système d'information, je trouverais ça choquant... -> Ce n'est à mon avis pas possible.

je te confirme que c'est possible , par contre il y a aussi une option des DB qui permets de ne PAS afficher la DB comme exécutée...

Pourvu qu'il n'existe pas une option de dblocate pour dire de voir toutes les DB exécutées même les DB "cachées" parceque là on aurait besoin d'une option DB pour dire "cacher aussi quand on a coché l'option pour voir totues les DB même les cachées" mais alors là on aurait besopin d'une option dans DBlocate pour quand même voir ces DB là mais alors la on aurait besoin d'une option dans les DB pour....

smileydehors


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#20 16-05-2013 16:17:08

FMolinas  
Membre Geek
Lieu: Lyon
Date d'inscription: 12-06-2007
Messages: 87
Pépites: 97
Banque: 6,435,474,948,567

Re: Lister les DataBases d'un Serveur

Tiens, tout ça me rappelle de vieux souvenirs de VBA pour Excel : xlVisible, xlHidden et le redoutable xlVeryHidden

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22