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?
Version imprimable
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?
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...
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?
Le premier lien Google avec
me dirige iciCode:Delphi NetServerEnum
http://coding.derkeiler.com/Archive/...4-04/0175.html
exemple d'utilisation:
mais comme PH.B. là dit... ça te donne les machinesCode:
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.
:google2: n'est donc pas votre ami ! :cry:
Le 3° lien avec la recherche suivante (Google réalise même l'auto-complétion lors de la saisie !)donne :Citation:
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...
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 :calim2: )
Bonjour,On a vu pire, certains déterrages s'apparentaient même à de l'archéologie... :mouarf:
Et en analysant le code pour essayer de deviner ce qu'elle pourrait faire ? :zoubi:
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'...
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
Merci !
Oui, j'avais à peine regardé le code... :oops: 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...