W pewnych przypadkach trzeba ustalić jaki adres IPv4 jest przypisany do serwera. Można oczywiście zajrzeć do widoku sys.dm_exec_connections
Niestety ta metoda nie zadziała jeśli połączenie jest nawiązane przez Shared Memory, albo 127.0.0.1 albo (i to mój przypadek) przez IPv6, a tymczasem potrzebowałem IPv4.
Na całe szczęście udało się znaleźć ciekawy pomysł z wykorzystaniem xm_cmdshell i prostego polecenia ipconfig
https://stackoverflow.com/questions/142142/sql-query-to-get-servers-ip-address
Oto delikatnie zmieniona procedura – u mnie działa!
CREATE PROCEDURE #sp_get_ip_address (@ip VARCHAR(40) OUT) AS BEGIN SET NOCOUNT ON DECLARE @Line varchar(200) DECLARE @pos int SET @ip = NULL CREATE TABLE #temp (line VARCHAR(200)) EXECUTE sp_configure 'show advanced options', 1; RECONFIGURE EXEC sp_configure 'xp_cmdshell', 1 RECONFIGURE INSERT INTO #temp EXEC master..xp_cmdshell 'ipconfig' EXECUTE sp_configure 'show advanced options', 1; RECONFIGURE EXEC sp_configure 'xp_cmdshell', 1 RECONFIGURE SELECT @Line = line FROM #temp WHERE UPPER (line) like '%IPV4%ADDRESS%' IF (ISNULL (@line,'***') != '***') BEGIN SET @pos = CHARINDEX (':',@line,1); SET @ip = RTRIM(LTRIM(SUBSTRING (@line, @pos + 1, LEN(@line) - @pos))) END DROP TABLE #temp SET NOCOUNT OFF END GO DECLARE @ip VARCHAR(40) EXEC #sp_get_ip_address @ip OUT DROP PROCEDURE #sp_get_ip_address SELECT @ip