2014年9月16日 星期二

SQL查詢IP


http://msdn.microsoft.com/zh-tw/library/bb895240.aspx

CONNECTIONPROPERTY ( property )
資料類型
說明
net_transport
nvarchar(40)
傳回這項連接所用的實體傳輸通訊協定。 不可為 Null。
傳回值為:HTTPNamed pipeSessionShared memorySSLTCP 和 VIA
附註 附註
當連接啟用 Multiple Active Result Set (MARS) 而且啟用連接共用之後,一定會傳回 Session
protocol_type
nvarchar(40)
傳回裝載的通訊協定類型。 它目前會區分 TDS (TSQL) 和 SOAP。 可為 Null。
auth_scheme
nvarchar(40)
傳回連接的 SQL Server 驗證配置。 驗證配置為 Windows 驗證 (NTLM、KERBEROS、DIGEST、BASIC、NEGOTIATE) 或 SQL Server 驗證。 不可為 Null。
local_net_address
varchar(48)
傳回這項連接之目標伺服器的 IP 位址。 只適用於使用 TCP 傳輸提供者的連接。 可為 Null。
local_tcp_port
int
如果這項連接是使用 TCP 傳輸的連接,傳回這項連接的目標伺服器 TCP 埠。 可為 Null。
client_net_address
varchar(48)
要求連接到此伺服器之用戶端的位址。 可為 Null。
physical_net_transport
nvarchar(40)
傳回這項連接所用的實體傳輸通訊協定。 當連接啟用 Multiple Active Result Set (MARS) 時準確。
<任何其他字串>
如果輸入無效,則會傳回 NULL。

SELECT 
ConnectionProperty('net_transport') AS 'Net transport', 
ConnectionProperty('protocol_type') AS 'Protocol type';

如何正確的取得使用者 IP?

http://devco.re/blog/2014/06/19/client-ip-detection/
CONVERT(varchar(48), CONNECTIONPROPERTY('client_net_address'))
CONVERT(varchar(48), CONNECTIONPROPERTY('local_net_address'))

(TextBox)GridView1.Rows[e.RowIndex].FindControl("GV_TextBox_ip") = Request.ServerVariables("REMOTE_ADDR")


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

http://alexchuo.blogspot.tw/2010/07/sql-server-ip.html
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
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 位址'




沒有留言: