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

MS SQL Server Discussion :

[adp] chercher l'adresse IP sql server.


Sujet :

MS SQL Server

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut [adp] chercher l'adresse IP sql server.
    Bonjour,
    Je souhaite connaitre l'adresse IP de sql server. est ce que quelqu'un serait comment y arriver?

    Merci pour tout.

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Avec un ping

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Merci pour cette réponse cependant elle ne correspond pas à ce que je cherche à faire.
    Le problème est que je souhaite obtenir l'adresse IP à partir du nom de serveur que j'obtiens dans la ligne de connection car je ne connais pas le nom de l'ordinateur Hote.
    Cela doit etre réalisé par programmation en VBA de manière automatisé.
    Cela doit me permettre d'obtenir après l'adresse MAC de la carte réseau du serveur.
    Si le ping peut réaliser cela je suis à votre écoute.

    merci

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Bonsoir,

    Tu trouveras ton bonheur dans les sources.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Merci mais dans les tutoriels et sources on explique comment trouver l'adresse MAC de la carte réseau de l'ordinateur sur lesquel je travail, hors ce que je recherche c'est l'adresse MAC de l'ordinateur distant.
    J'ai donc trouvé des fonctions me permettant de trouver n'importe quelle adresse MAC sur le réseau.
    Mais encore faut il connaitre l'adresse IP de l'ordinateur ou se trouve le serveur SQL server.
    C'est là la difficulté.

  6. #6
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Points : 112
    Points
    112
    Par défaut
    salut,
    regarde ce lien
    http://www.sqlmag.com/Article/Articl...ver_48303.html
    il explique comment avoir dynamiquement l'adresse ip d'un sql server
    j'espere que ca te sera utile

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Cette réponse est prometteuse cependant je bloque sur l'autorisation de xp_cmdshell. je ne sais pas comment donner les autorisations d'accès.

    sinon une autre solution serais d'obtenir le workstation ID présent dans propriétés des liaisons de données mais je ne sais pas comment faire.

  8. #8
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    A priori, c'est plus une question propre à SQL Server. Une fois qu'on aura la réponse des experts SQL Server, il sera facile de le passer en VBA


  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    merci mais j'ai résolu au travers du VBA

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Tu peux donner la solution ?

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Bonjour,
    Pas de problème,
    Remarque je n'ai rien inventé seulement adapté ce qui existait sur divers forums.

    De plus ce code sert à chercher l'IP Mais mon objectif principal était de trouver l'adresse MAC du PC ou se trouvait SQL SERVER.
    Je met donc l'ensemble du code

    1) retrouver l'adresse IP de n' importe quel PC sur le réseau
    Option Explicit

    'Déclaration des constantes
    Public Const IP_SUCCESS As Long = 0
    Public Const MAX_WSADescription As Long = 256
    Public Const MAX_WSASYSStatus As Long = 128
    Public Const WS_VERSION_REQD As Long = &H101
    Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
    Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
    Public Const MIN_SOCKETS_REQD As Long = 1
    Public Const SOCKET_ERROR As Long = -1

    'Déclaration du type de données Winsock
    Public Type WSADATA
    wVersion As Integer
    wHighVersion As Integer
    szDescription(0 To MAX_WSADescription) As Byte
    szSystemStatus(0 To MAX_WSASYSStatus) As Byte
    wMaxSockets As Long
    wMaxUDPDG As Long
    dwVendorInfo As Long
    End Type

    'La fonction de résolutions d'adresses DNS appellée
    'GetHostByName fait partie de la librairie Wsock32.dll
    Private Declare Function gethostbyname Lib "wsock32" _
    (ByVal hostname As String) As Long

    'declaration des procedures auxilliares
    Private Declare Sub CopyMemory Lib "kernel32" _
    Alias "RtlMoveMemory" _
    (xDest As Any, _
    xSource As Any, _
    ByVal nbytes As Long)

    Private Declare Function lstrlenA Lib "kernel32" _
    (lpString As Any) As Long

    Public Declare Function WSAStartup Lib "wsock32" _
    (ByVal wVersionRequired As Long, _
    lpWSADATA As WSADATA) As Long

    'Procedure de nettoyage des sockets
    Public Declare Function WSACleanup Lib "wsock32" () As Long

    'Routine d'initialisation du socket
    Public Function SocketsInitialize() As Boolean

    Dim WSAD As WSADATA
    Dim success As Long

    SocketsInitialize = WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS

    End Function

    'routine de nettoyage du socket retournant une msg d'erreur si
    'necessaire
    Public Sub SocketsCleanup()
    If WSACleanup() <> 0 Then
    MsgBox "Une erreur à eu lieu lors de la fermeture.", vbExclamation
    End If
    End Sub

    'Cette fonction est en faite celle qu'on va appeller à chaque fois pour
    'résoudre un nom (passé en tant que String) et qui va nous retourner
    'une adresse IP (en String également)
    Public Function GetIPFromHostName(ByVal sHostName As String) As String

    'Conversion du nom d'hote en adresse IP

    Dim nbytes As Long
    Dim ptrHosent As Long
    Dim ptrName As Long
    Dim ptrAddress As Long
    Dim ptrIPAddress As Long
    Dim sAddress As String

    sAddress = Space$(4)

    ptrHosent = gethostbyname(sHostName & vbNullChar)

    If ptrHosent <> 0 Then

    'la fonction gethostbyname nous retourne un POINTEUR vers la structure
    'HOSENT en mémoire. On va recopier l'adresse IP en mémoire, qui 'commence 12 octets après le début de la structure

    ptrAddress = ptrHosent + 12

    'get the IP address
    CopyMemory ptrAddress, ByVal ptrAddress, 4
    CopyMemory ptrIPAddress, ByVal ptrAddress, 4
    CopyMemory ByVal sAddress, ByVal ptrIPAddress, 4

    GetIPFromHostName = IPToText(sAddress)

    End If
    End Function

    'Cette fonction sert à transformer la structure retrouvée d'une adresse
    'IP (char x 4) en String du type "123.123.123.123"
    Private Function IPToText(ByVal IPAddress As String) As String

    IPToText = CStr(Asc(IPAddress)) & "." & _
    CStr(Asc(Mid$(IPAddress, 2, 1))) & "." & _
    CStr(Asc(Mid$(IPAddress, 3, 1))) & "." & _
    CStr(Asc(Mid$(IPAddress, 4, 1)))

    End Function
    '----------fin du code module


    2) pour ceux que ça interesse trouver l'adresse MAC en fonction de l'adresse IP Voir FAQ
    Option Compare Database



    Option Explicit
    Private Const NO_ERROR = 0

    Private Declare Function inet_addr Lib "wsock32.dll" _
    (ByVal s As String) As Long

    Private Declare Function SendARP Lib "iphlpapi.dll" _
    (ByVal DestIP As Long, _
    ByVal SrcIP As Long, _
    pMacAddr As Long, _
    PhyAddrLen As Long) As Long

    Private Declare Sub CopyMemory Lib "kernel32" _
    Alias "RtlMoveMemory" _
    (dst As Any, _
    src As Any, _
    ByVal bcount As Long)







    Public Function GetRemoteMACAddress(ByVal sRemoteIP As String, _
    sRemoteMacAddress As String, _
    sDelimiter As String) As Boolean

    Dim dwRemoteIP As Long
    Dim pMacAddr As Long
    Dim bpMacAddr() As Byte
    Dim PhyAddrLen As Long

    dwRemoteIP = ConvertIPtoLong(sRemoteIP)
    If dwRemoteIP <> 0 Then
    PhyAddrLen = 6
    GetRemoteMACAddress = False

    'Retrouver le Mac pour L'adresse IP ...
    If SendARP(dwRemoteIP, 0&, pMacAddr, PhyAddrLen) = NO_ERROR Then

    If (pMacAddr <> 0) And (PhyAddrLen <> 0) Then

    ReDim bpMacAddr(0 To PhyAddrLen - 1)
    CopyMemory bpMacAddr(0), pMacAddr, ByVal PhyAddrLen

    sRemoteMacAddress = MakeMacAddress(bpMacAddr(), sDelimiter)
    GetRemoteMACAddress = True

    End If 'pMacAddr

    End If 'SendARP

    End If 'dwRemoteIP

    End Function


    Private Function ConvertIPtoLong(sIpAddress) As Long

    ConvertIPtoLong = inet_addr(sIpAddress)

    End Function


    Private Function MakeMacAddress(b() As Byte, sDelim As String) As String

    Dim cnt As Long
    Dim buff As String

    On Local Error GoTo MakeMac_error

    'so far, MAC addresses are
    'exactly 6 segments in size (0-5)
    If UBound(b) = 5 Then

    'concatenate the first five values
    'together and separate with the
    'delimiter char
    For cnt = 0 To 4
    buff = buff & Right$("00" & Hex(b(cnt)), 2) & sDelim
    Next

    'and append the last value
    buff = buff & Right$("00" & Hex(b(5)), 2)

    End If 'UBound(b)

    MakeMacAddress = buff

    MakeMac_exit:
    Exit Function

    MakeMac_error:
    MakeMacAddress = "(error building MAC address)"
    Resume MakeMac_exit

    End Function
    et enfin liaison de l'ensemble pour avoir l'adresse MAC. Si vous ne voulez que l'adresse IP

    IP = GetIPFromHostName(NomHote)


    Private Sub AdresseMacHote()
    Dim sRemoteMacAddress As String
    Dim IP As String
    Dim NomHote As String
    Dim db As ADODB.Connection
    Dim dbMaster1 As New ADODB.Connection

    Dim rst As New ADODB.Recordset
    Set db = CurrentProject.Connection

    rst.Open "SELECT HOST_NAME() AS DeviceID,Host_ID() as ID", db, adOpenForwardOnly, adLockOptimistic
    If rst.EOF = False Then
    NomHote = rst("DeviceID")

    End If
    IP = GetIPFromHostName(NomHote)

    If Len(IP) > 0 Then
    If GetRemoteMACAddress(IP, sRemoteMacAddress, "-") Then
    MsgBox sRemoteMacAddress
    Else
    MsgBox "(SendARP call ERREUR)"
    End If
    End If
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. migration vers adp et sql server 2005
    Par a29595 dans le forum Access
    Réponses: 5
    Dernier message: 25/01/2007, 19h27
  2. [adp] chercher l'adresse IP sql server.
    Par cbleas dans le forum Access
    Réponses: 7
    Dernier message: 14/12/2006, 09h43
  3. [conseil][outlook] SQL Server vers Carnet d'adresses Outlook
    Par lucie.houel dans le forum Outlook
    Réponses: 3
    Dernier message: 13/09/2006, 12h59
  4. Access + SQL Server (via ADP)
    Par Yomdeb dans le forum Access
    Réponses: 1
    Dernier message: 22/03/2006, 00h40

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