2010年7月24日

在 SQL Server 取得目前用戶端的 IP 位址

從 SQL Server 2005 開始提供所謂的「動態管理檢視表(Dynamic Management View)」,會傳回伺服器的狀態資訊,使用下面這道 T-SQL 即可檢視用戶端的 IP 位址:

SELECT net_transport 實體傳輸通訊協定,
	protocol_type 裝載的通訊協定類型,
	auth_scheme 驗證模式,
	local_net_address '目標伺服器的 IP 位址',
	local_tcp_port '目標伺服器 TCP 埠',
	client_net_address '用戶端的 IP 位址' 
FROM sys.dm_exec_connections
WHERE session_id = @@SPID

另外一種方式,則是使用 SQL Server 2008 R2 新的 CONNECTIONPROPERTY 函式取得目前用戶端的 IP 位址

SELECT CONNECTIONPROPERTY('net_transport') 實體傳輸通訊協定, 
	CONNECTIONPROPERTY('protocol_type') 裝載的通訊協定類型, 
	CONNECTIONPROPERTY('auth_scheme') 驗證模式, 
	CONNECTIONPROPERTY('local_net_address') '目標伺服器的 IP 位址', 
	CONNECTIONPROPERTY('local_tcp_port') '目標伺服器 TCP 埠', 
	CONNECTIONPROPERTY('client_net_address') '用戶端的 IP 位址'

由此我們可以知道 sys.dm_exec_connections 動態管理檢視表回傳的結果與 CONNECTIONPROPERTY 函式的相對應資料欄位所顯示的結果是相同的。

沒有留言:

張貼留言