Asp.net

如何從 SQL Server 2008 本身獲取客戶端 IP 地址?

  • March 30, 2012

我有一個插入/更新/刪除的觸發器。那工作正常。此外,我需要進行更改的客戶端 IP 地址。我需要在 T-SQL 中,這意味著,不是在任何 Web 表單中,而是在 SQL/T-SQL 中,而我的觸發器將被觸發。

我也看了看,發現主數據庫中有一個名為的儲存過程xp_cmdshell,當我們執行它時,ipconfig我們可以獲得 IP 地址。我認為這僅在您對數據庫具有管理訪問權限時才有效。我的主機是共享主機,所以我沒有這樣的特權。有沒有其他的出路?

請注意:我對我的 SQL Server 2008 數據庫沒有管理權限。作為經過身份驗證的使用者,我需要一個解決方案。

另一個更新:

我有解決方案,適用於我的場景的查詢是

SELECT hostname, net_library, net_address
FROM sys.sysprocesses 
WHERE spid = @@SPID

它根據需要執行,但只有一個問題,net_address 不是 IP 格式。以下是我的結果:

hostname    net_library     net_address
IPC03       TCP/IP          AE8F925461DE  

我很想知道:

  1. 這裡的 net_address 是什麼?是 MAC 地址還是某個 IP 地址等?
  2. 有什麼方法可以將 net_address 轉換為 ip?

我找到了一些可能對你有用的東西

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

如何在 SQL Server 中獲取客戶端 IP 地址

也看看這篇關於獲取客戶端IP地址的文章

引用自:https://stackoverflow.com/questions/9941074