How can i see what IP address made the request to SQL Server?
#背景
前提:有一个服务定时读取某台服务器上的sql server 数据库,轮询处理一些事务;
问题:突然发现数据库数据不对劲,于是将服务器上的服务关闭,但仍发现数据库上的数据发生变动;
#解决方案
第一步:通过sql server profiler 跟踪服务器上的数据库;
第二步:在跟踪得到的数据中找到影响数据的sql语句,并找到该条记录的SPID属性;
第三步:执行如下sql,可获取执行该sql的客户端主机的主机名;(sql中的@@SPID指的就是第二步图片中的SPID字段)
SELECT hostname FROM sys.sysprocesses WHERE spid = @@SPID
--SELECT hostname FROM sys.sysprocesses WHERE spid = 53
第四步:执行如下sql,可获取执行该sql的客户端主机的IP;(client_net_address 为客户端ip,local_net_address为所连接的主机ip)
SELECT client_net_address, local_net_address
FROM sys.dm_exec_connections
WHERE session_id = 53
#结果
通过上述方案,发现出现问题的原因是,我在另一台主机上也安装了这个服务,连接的是同一个数据库,所以,吧啦吧啦;