SELECT
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address
Le code ici vous donnera l'adresse IP ;
Cela fonctionnera pour une demande de client distant à SQL 2008 et plus récent.
Si les connexions de mémoire partagée sont autorisées, l'exécution ci-dessus sur le serveur lui-même vous donnera
- "Mémoire partagée" comme valeur pour 'net_transport', et
- NULL pour 'local_net_address', et
- '
<local machine>
' sera affiché dans 'client_net_address'.
'client_net_address' est l'adresse de l'ordinateur d'où provient la demande, alors que 'local_net_address' serait le serveur SQL (donc NULL sur les connexions de mémoire partagée), et l'adresse que vous donneriez à quelqu'un s'il ne peut pas utiliser le NetBios du serveur nom ou nom de domaine complet pour une raison quelconque.
Je déconseille fortement d'utiliser cette réponse. Activer le shell out est une très mauvaise idée sur un serveur SQL de production.