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?
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
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
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.
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
Le premier lien Google avec
me dirige ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part Delphi NetServerEnum
http://coding.derkeiler.com/Archive/...4-04/0175.html
exemple d'utilisation:
mais comme PH.B. là dit... ça te donne les machines
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
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
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 !)donne :delphi list sql server instances
How to list all installed MS SQL Server Name by Delphi?
Le code proposé avec des adaptations mineures devrait vous satisfaire...
Philippe.
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 )
Bonjour,On a vu pire, certains déterrages s'apparentaient même à de l'archéologie...
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.
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
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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.
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.
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