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
O código aqui lhe dará o endereço IP;
Isso funcionará para uma solicitação de cliente remoto para SQL 2008 e mais recente.
Se você tiver conexões de memória compartilhada permitidas, a execução acima no próprio servidor fornecerá
- "Memória Compartilhada" como o valor para 'net_transport' e
- NULL para 'local_net_address' e
- '
<local machine>
' será mostrado em 'client_net_address'.
'client_net_address' é o endereço do computador que originou a solicitação, enquanto 'local_net_address' seria o servidor SQL (portanto, NULL em conexões de memória compartilhada) e o endereço que você daria a alguém se não puder usar o NetBios do servidor nome ou FQDN por algum motivo.
Eu aconselho fortemente contra o uso desta resposta. Habilitar o shell out é uma péssima ideia em um SQL Server de produção.