在預存程序、觸發器或動態 SQL 中,透過 sys.dm_exec_connections 取得當前會話 (@@SPID) 的用戶端網路位址 (client_net_address)。
CREATE FUNCTION [dbo].[GetCurrentIP] ()
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @IP_Address VARCHAR(255);
SELECT @IP_Address = client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
RETURN @IP_Address;
END;
SELECT dbo.GetCurrentIP() AS ClientIP;
-- 輸出範例: 192.168.1.100:54321
VIEW SERVER STATE 權限才能查詢 dm_exec_connections。<local machine> 或 127.0.0.1。