SQLServer如何获取客户端IP
很多用户询问如何通过SQLServer获取客户端IP从而定位一些问题,比如链接泄露,其实主要是利用几个相关视图,如下给出一些SQL方便用户排查
当前链接
SELECT CONNECTIONPROPERTY('PROTOCOL_TYPE') AS PROTOCOL_TYPE,CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') AS CLIENT_NET_ADDRESS
所有链接
SELECTSP.SPID,SP.LOGINAME,SP.LOGIN_TIME,SP.HOSTNAME,SP.PROGRAM_NAME,DC.CLIENT_TCP_PORT,DC.CLIENT_NET_ADDRESSFROM SYS.SYSPROCESSES AS SPINNER JOIN SYS.DM_EXEC_CONNECTIONS AS DCON SP.SPID = DC.SESSION_IDWHERE SP.SPID > 50AND DC.AUTH_SCHEME='SQL'
查看更详细的链接参数配置
SELECT * FROM SYS.DM_EXEC_SESSIONS WHERE SESSION_ID=之前获取的SPID
------获取
Select SYSTEM_USER 当前用户名
, USER_NAME() 当前所有者
,db_Name() 当前数据库
,@@SPID 当前进程号
,(select top 1 FileName from master..sysdatabases where name=db_name()) 数据库文件
,HOST_ID () 客户端__ID
,APP_NAME() 客户端程序
,HOST_NAME() 客户端电脑
,(select top 1 net_address from master..sysprocesses where spid=@@SPID) 客户端_MAC
,ServerProperty('MachineName') 服务器电脑
,(select top 1 net_address from master..sysprocesses where hostname=ServerProperty('MachineName')) 服务器_MAC
,ServerProperty('ServerName') SQL实例
,ServerProperty('Edition') SQL版本
,ServerProperty('ProductVersion') SQL版本号
,ServerProperty('ProductLevel') SQL补丁SP
,ServerProperty('ProcessID') SQL进程ID
,@@version 版本信息串