33 votos

SQL - Consulta para obtener la dirección IP del servidor

¿Hay alguna consulta en Sql Server 2005 que pueda utilizar para obtener la IP o el nombre del servidor?

50voto

Jeff Muzzy Puntos 251
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 

El código aquí le dará la dirección IP; La respuesta con más votos, nunca debe ser utilizada. Habilitar el Shell out es una muy mala idea para habilitar en un Sql Server de producción.

27voto

Brian R. Bondy Puntos 141769

Puedes obtener el [nombre de host]\Nnombre de instancia por:

SELECT @@SERVERNAME;

Para obtener sólo el nombre de host cuando se tiene el nombre de host \instance formato del nombre:

SELECT LEFT(ltrim(rtrim(@@ServerName)), Charindex('\', ltrim(rtrim(@@ServerName))) -1)

Alternativamente, como señaló @GilM:

SELECT SERVERPROPERTY('MachineName')

Puedes obtener la dirección IP real usando esto:

create Procedure sp_get_ip_address (@ip varchar(40) out)
as
begin
Declare @ipLine varchar(200)
Declare @pos int
set nocount on
          set @ip = NULL
          Create table #temp (ipLine varchar(200))
          Insert #temp exec master..xp_cmdshell 'ipconfig'
          select @ipLine = ipLine
          from #temp
          where upper (ipLine) like '%IP ADDRESS%'
          if (isnull (@ipLine,'***') != '***')
          begin 
                set @pos = CharIndex (':',@ipLine,1);
                set @ip = rtrim(ltrim(substring (@ipLine , 
               @pos + 1 ,
                len (@ipLine) - @pos)))
           end 
drop table #temp
set nocount off
end 
go

declare @ip varchar(40)
exec sp_get_ip_address @ip out
print @ip

Fuente del SQL script .

12voto

chris.leonard Puntos 121

El servidor puede tener varias direcciones IP en las que está escuchando. Si su conexión tiene el permiso de servidor VIEW SERVER STATE concedido, puede ejecutar esta consulta para obtener la dirección a la que se ha conectado a Sql Server:

SELECT dec.local_net_address
FROM sys.dm_exec_connections AS dec
WHERE dec.session_id = @@SPID;

Esta solución no requiere que Shell salga al SO a través de xp_cmdshell, que es una técnica que debería estar desactivada (o al menos estrictamente asegurada) en un servidor de producción. Puede requerir que conceda VIEW SERVER STATE al login apropiado, pero eso es un riesgo de seguridad mucho menor que ejecutar xp_cmdshell.

La técnica mencionada por GilM para el nombre del servidor es la preferida:

SELECT SERVERPROPERTY(N'MachineName');

7voto

Michał Piaskowski Puntos 2688

Está en el @@SERVERNAME variable;

SELECT @@SERVERNAME;

3voto

Pseudo Masochist Puntos 1579
select @@servername

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X