從 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 函式的相對應資料欄位所顯示的結果是相同的。
沒有留言:
張貼留言