首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 取得伺服器名稱與 IP 位址:三種方法完整比較

     編輯:關於SqlServer

根據環境限制(是否允許 xp_cmdshell),提供三種取得 SQL Server 實體伺服器名稱與 IP 位址的方法。

方法一:系統函數取得伺服器名稱

SELECT SERVERPROPERTY('MachineName') AS PhysicalServerName;
SELECT @@SERVERNAME AS InstanceName;
SELECT HOST_NAME() AS ClientWorkstationName;  -- 連線用戶端主機名
  • MachineName:實體/虛擬機器主機名(叢集環境下為作用中節點)。
  • @@SERVERNAME:SQL Server 執行個體名稱(含具名實例)。
  • HOST_NAME():發起連線的用戶端電腦名。

方法二:xp_cmdshell 執行 ipconfig(需高權限、常被禁用)

-- 啟用 xp_cmdshell(需 sysadmin)
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;

DECLARE @ip VARCHAR(40), @ipline VARCHAR(200), @pos INT;
CREATE TABLE #temp (ipline VARCHAR(200));
INSERT #temp EXEC master..xp_cmdshell 'ipconfig';
SELECT @ipline = ipline FROM #temp WHERE UPPER(ipline) LIKE '%IPV4%';
IF @ipline IS NOT NULL BEGIN
    SET @pos = CHARINDEX(':', @ipline);
    SET @ip = LTRIM(RTRIM(SUBSTRING(@ipline, @pos + 1, LEN(@ipline) - @pos)));
    SELECT @ip AS IPv4Address;
END
DROP TABLE #temp;

-- 用畢關閉 xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE;
EXEC sp_configure 'show advanced options', 0; RECONFIGURE;

缺點:需 sysadmin、安全風險高、解析邏輯依賴作業系統語言版本(中文 "IPv4 位址" vs 英文 "IPv4 Address")。

方法三:sys.dm_exec_connections(推薦、無特權需求、跨平台)

SELECT 
    CONVERT(NVARCHAR(128), SERVERPROPERTY('SERVERNAME')) AS ServerName,
    LOCAL_NET_ADDRESS AS SQLServerIP,
    CLIENT_NET_ADDRESS AS ClientIP
FROM SYS.DM_EXEC_CONNECTIONS 
WHERE SESSION_ID = @@SPID;
  • 僅需標準連線權限,回傳 SQL Server 監聽的網路介面 IP 與用戶端 IP。
  • 適用於 Azure SQL、Linux 容器、叢集環境。
  • 最佳實務首選。

總結建議

  1. 優先使用 sys.dm_exec_connections 取得 IP。
  2. 伺服器名稱用 SERVERPROPERTY('MachineName')(實體)或 @@SERVERNAME(實例)。
  3. 避免 xp_cmdshell,若必須用請嚴格限制權限並用後即關閉。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved