129 votes

SQL - Requête pour obtenir l'adresse IP du serveur

Existe-t-il une requête dans SQL Server 2005 que je puisse utiliser pour obtenir l'adresse IP ou le nom du serveur?

203voto

Jeff Muzzy Points 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 
 

Le code ici vous donnera l'adresse IP; La réponse avec le plus de votes ne devrait jamais être utilisée. Activer le shell est une très mauvaise idée de l'activer sur un serveur SQL de production.

43voto

Brian R. Bondy Points 141769

Vous pouvez obtenir le [nomhôte] \ [nominstance] par:

 SELECT @@SERVERNAME;
 

Pour obtenir uniquement le nom d'hôte lorsque vous avez le format hostname \ nom de l'instance:

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

Alternativement, comme l'a souligné @GilM:

 SELECT SERVERPROPERTY('MachineName')
 

Vous pouvez obtenir l'adresse IP réelle en utilisant ceci:

 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
 

Source du script SQL .

26voto

chris.leonard Points 121

Le serveur peut avoir plusieurs adresses IP qu'il est à l'écoute sur. Si votre connexion a la VUE de l'ÉTAT du SERVEUR de serveur de l'autorisation accordée, vous pouvez exécuter cette requête pour obtenir l'adresse que vous avez connecté à SQL Server:

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

Cette solution ne vous oblige pas à débourser de l'OS via xp_cmdshell, qui est une technique qui doit être désactivé (ou au moins strictement sécurisé) sur un serveur de production. Il peut vous obliger à accorder AFFICHER l'ÉTAT du SERVEUR à la connexion appropriée, mais qui est beaucoup plus faible risque pour la sécurité de l'exécution de xp_cmdshell.

La technique mentionnée par GilM pour le nom du serveur est privilégiée:

SELECT SERVERPROPERTY(N'MachineName');

9voto

Michał Piaskowski Points 2688

C'est dans la variable @@ SERVERNAME ;

 SELECT @@SERVERNAME;
 

6voto

Pseudo Masochist Points 1579
select @@servername

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X