SQL - Query to get server's IP address

前端 未结 10 1395
情深已故
情深已故 2020-11-27 11:35

Is there a query in SQL Server 2005 I can use to get the server\'s IP or name?

相关标签:
10条回答
  • 2020-11-27 11:56

    --Try this script it works to my needs. Reformat to read it.

    SELECT  
    SERVERPROPERTY('ComputerNamePhysicalNetBios')  as 'Is_Current_Owner'
        ,SERVERPROPERTY('MachineName')  as 'MachineName'
        ,case when @@ServiceName = 
        Right (@@Servername,len(@@ServiceName)) then @@Servername 
          else @@servername +' \ ' + @@Servicename
          end as '@@Servername \ Servicename',  
        CONNECTIONPROPERTY('net_transport') AS net_transport,
        CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
        dec.local_tcp_port,
        CONNECTIONPROPERTY('local_net_address') AS local_net_address,
        dec.local_net_address as 'dec.local_net_address'
        FROM sys.dm_exec_connections AS dec
        WHERE dec.session_id = @@SPID;
    
    0 讨论(0)
  • 2020-11-27 12:01

    It's in the @@SERVERNAME variable;

    SELECT @@SERVERNAME;
    
    0 讨论(0)
  • 2020-11-27 12:02

    I know this is an old post, but perhaps this solution can be usefull when you want to retrieve the IP address and TCP port from a Shared Memory connection (e.g. from a script run in SSMS locally on the server). The key is to open a secondary connection to your SQL Server using OPENROWSET, in which you specify 'tcp:' in your connection string. The rest of the code is merely building dynamic SQL to get around OPENROWSET’s limitation of not being able to take variables as its parameters.

    DECLARE @ip_address       varchar(15)
    DECLARE @tcp_port         int 
    DECLARE @connectionstring nvarchar(max) 
    DECLARE @parm_definition  nvarchar(max)
    DECLARE @command          nvarchar(max)
    
    SET @connectionstring = N'Server=tcp:' + @@SERVERNAME + ';Trusted_Connection=yes;'
    SET @parm_definition  = N'@ip_address_OUT varchar(15) OUTPUT
                            , @tcp_port_OUT   int         OUTPUT';
    
    SET @command          = N'SELECT  @ip_address_OUT = a.local_net_address,
                                      @tcp_port_OUT   = a.local_tcp_port
                              FROM OPENROWSET(''SQLNCLI''
                                     , ''' + @connectionstring + '''
                                     , ''SELECT local_net_address
                                              , local_tcp_port
                                         FROM sys.dm_exec_connections
                                         WHERE session_id = @@spid
                                       '') as a'
    
    EXEC SP_executeSQL @command
                     , @parm_definition
                     , @ip_address_OUT = @ip_address OUTPUT
                     , @tcp_port_OUT   = @tcp_port OUTPUT;
    
    
    SELECT @ip_address, @tcp_port
    
    0 讨论(0)
  • 2020-11-27 12:05
    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 
    

    The code here Will give you the IP Address;

    This will work for a remote client request to SQL 2008 and newer.

    If you have Shared Memory connections allowed, then running above on the server itself will give you

    • "Shared Memory" as the value for 'net_transport', and
    • NULL for 'local_net_address', and
    • '<local machine>' will be shown in 'client_net_address'.

    'client_net_address' is the address of the computer that the request originated from, whereas 'local_net_address' would be the SQL server (thus NULL over Shared Memory connections), and the address you would give to someone if they can't use the server's NetBios name or FQDN for some reason.

    I advice strongly against using this answer. Enabling the shell out is a very bad idea on a production SQL Server.

    0 讨论(0)
提交回复
热议问题