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

Bases de données Delphi Discussion :

Détection des instances SQL Server du réseau


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé Avatar de vg-matrix
    Inscrit en
    Février 2007
    Messages
    1 220
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2007
    Messages : 1 220
    Points : 612
    Points
    612
    Par défaut Détection des instances SQL Server du réseau
    Bonjour,
    J'utilise Delphi 2009 et je souhaite détecter toutes les instances sql server 2005 et 2008 de mon réseau depuis mon application.
    Comment dois-je procéder?
    Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste...

    Groupe des développeurs ivoiriens

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Regardez du côté de
    NetServerEnum avec la structure SERVER_INFO_101 et SV_TYPE_SQLSERVER

    sans spécifier le nom su serveur, un broadcast sera émis...
    et vous devriez trouver les réponses sur votre réseau.
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par Eric Boisvert Voir le message
    Regardez du côté de
    NetServerEnum avec la structure SERVER_INFO_101 et SV_TYPE_SQLSERVER

    sans spécifier le nom su serveur, un broadcast sera émis...
    et vous devriez trouver les réponses sur votre réseau.
    De mémoire, avec cette méthode, je n'arrivais pas à voir les instances nommées de sqlserveur mais seulement le nom de la machine l'hébergeant, mais peut-être qu'à l'époque, j'avais loupé quelque chose...
    Pour retrouver les instances nommées "visibles" de Sqlserver sur toutes les machines, j'envoyais un message sur le réseau, broadcasté sur le port UDP 1434, et récupérais les infos (nom de la machine, nom de l'instance, version, cluster)...
    Je dis "visibles" car suivant les règles de sécurité mis en œuvre, certaines instances pouvaient ne pas être détectées...
    Philippe.

  4. #4
    Membre confirmé Avatar de vg-matrix
    Inscrit en
    Février 2007
    Messages
    1 220
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2007
    Messages : 1 220
    Points : 612
    Points
    612
    Par défaut
    Merci à vous pour vos réponses. Pourriez-vous me donner un peu plus de détails sur la procédure à suivre s'il vous plaît?
    Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste...

    Groupe des développeurs ivoiriens

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Le premier lien Google avec
    me dirige ici
    http://coding.derkeiler.com/Archive/...4-04/0175.html

    exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Var
      lstSrvSQL: TStringList;
    Begin
      lstSrvSQL := GetServerNames(SV_TYPE_SQLSERVER);
      Memo1.Text := lstSrvSQL.Text;
      lstSrvSQL.Free; //Faut liberer
    mais comme PH.B. là dit... ça te donne les machines
    qui hébergent des serveurs SQL et dans mon cas c'était suffisant.
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par vg-matrix Voir le message
    Merci à vous pour vos réponses. Pourriez-vous me donner un peu plus de détails sur la procédure à suivre s'il vous plaît?
    n'est donc pas votre ami !

    Le 3° lien avec la recherche suivante (Google réalise même l'auto-complétion lors de la saisie !)
    delphi list sql server instances
    donne :
    How to list all installed MS SQL Server Name by Delphi?
    Le code proposé avec des adaptations mineures devrait vous satisfaire...
    Philippe.

  7. #7
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    donne :
    How to list all installed MS SQL Server Name by Delphi?
    Le code proposé avec des adaptations mineures devrait vous satisfaire...
    Bonjour à tous,

    Petit déterrage de topic car je cherche à lister toutes les instances SQL serveur d'un réseau local, le code cité ci-dessus utilise Fronttoken !

    Est ce que quelqu'un connait la fonction Fronttoken ? J'arrive pas à savoir dans quelle unité cette fonction est déclarée... ( même avec mon ami google )

  8. #8
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par free07 Voir le message
    Petit déterrage de topic...
    On a vu pire, certains déterrages s'apparentaient même à de l'archéologie...

    Citation Envoyé par free07 Voir le message
    Est ce que quelqu'un connait la fonction Fronttoken ? J'arrive pas à savoir dans quelle unité cette fonction est déclarée... ( même avec mon ami google )
    Et en analysant le code pour essayer de deviner ce qu'elle pourrait faire ?

    A la louche, je dirais qu'elle extrait une sous chaine jusqu'à un délimiteur donné, délimiteur non inclus, et renvoie la chaine amputée de la sous chaine et du délimiteur.
    Pour S='toto-titi', FrontToken(S, '-') doit retourner 'toto' et S doit contenir 'titi'.
    Donc pour le code source cité et pour S= '192.168.1.x', IP vaudra '192.168.1.255' quoi qu'il y ait à la place de 'x'...
    Philippe.

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    a priori ton fronttoken n'est rien d'autre que l'extration d'une chaine de caractere dans une autre
    regarde du coté de indy
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  10. #10
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Et en analysant le code pour essayer de deviner ce qu'elle pourrait faire ?

    A la louche, je dirais qu'elle extrait une sous chaine jusqu'à un délimiteur donné, délimiteur non inclus, et renvoie la chaine amputée de la sous chaine et du délimiteur.
    Pour S='toto-titi', FrontToken(S, '-') doit retourner 'toto' et S doit contenir 'titi'.
    Donc pour le code source cité et pour S= '192.168.1.x', IP vaudra '192.168.1.255' quoi qu'il y ait à la place de 'x'...
    Merci !

    Oui, j'avais à peine regardé le code... et cela fait bien ce que tu a trouvé, c'est simplement des extractions de chaines...

    Sauf que c'est un peu simple, cela ne parcourt pas une plage d'adresse et cela suppose que le serveur est en x.x.x.255

    Je vais devoir aussi tenir compte du masque de sous réseau.

    Bon en tout cas, je n'ai jamais utilisé indy et je vais donc devoir regarder comment cela fonctionne.

  11. #11
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par free07 Voir le message
    Sauf que c'est un peu simple, cela ne parcourt pas une plage d'adresse et cela suppose que le serveur est en x.x.x.255

    Je vais devoir aussi tenir compte du masque de sous réseau.

    Bon en tout cas, je n'ai jamais utilisé indy et je vais donc devoir regarder comment cela fonctionne.
    Il va donc non seulement apprendre à utiliser Indy, mais à regarder le code encore plus en profondeur...
    En effet, il y a une commande très importante dans ce code : UDP.BroadcastEnabled:=True;.
    Elle permet de s'adresser à tous les ordinateurs du réseau.
    La boucle repeat...REC := UDP.ReceiveString(Peer, Port);...until REC='';// permet de récupérer toutes les réponses...

    Dans le code, il utilise une adresse IP de type aaa.bbb.ccc.255. ou aaa, bbb et ccc sont compris entre 0 et 255. Son masque de sous réseau doit être 255.255.255.0.
    Ainsi il ne s'adresse qu'au sous réseau pertinent pour la recherche...
    Philippe.

  12. #12
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Il va donc non seulement apprendre à utiliser Indy, mais à regarder le code encore plus en profondeur...
    En effet, il y a une commande très importante dans ce code : UDP.BroadcastEnabled:=True;.
    Elle permet de s'adresser à tous les ordinateurs du réseau.
    La boucle repeat...REC := UDP.ReceiveString(Peer, Port);...until REC='';// permet de récupérer toutes les réponses...

    Dans le code, il utilise une adresse IP de type aaa.bbb.ccc.255. ou aaa, bbb et ccc sont compris entre 0 et 255. Son masque de sous réseau doit être 255.255.255.0.
    Ainsi il ne s'adresse qu'au sous réseau pertinent pour la recherche...
    Merci pour ces précisions, effectivement cela fonctionne dans un réseau avec un maque de 255.255.255.0

Discussions similaires

  1. [2012] Récupérer la liste des instances SQL Server sur le réseau
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/05/2015, 10h27
  2. Récupérer une liste des serveurs SQL Server de votre réseau
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/12/2010, 10h42
  3. Récupérer une liste des serveurs SQL Server de votre réseau
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2010, 22h58
  4. Réponses: 5
    Dernier message: 18/08/2010, 16h10
  5. [SQL SERVER] Interface réseau dédiée à chaque instance
    Par Damdew dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/05/2006, 18h29

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