Existe-t-il une requête dans SQL Server 2005 que je puisse utiliser pour obtenir l'adresse IP ou le nom du serveur?
Réponses
Trop de publicités? 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.
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
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');
C'est dans la variable @@ SERVERNAME ;
SELECT @@SERVERNAME;