我有一个用于插入/更新/删除的触发器,已经正常工作。我还需要从进行更改的客户端IP地址。我需要在T-SQL中获取它,也就是说,在我的触发器被激活时,不是在任何Web表单中。
我进行了谷歌搜索,并得知主数据库中有一个存储过程名为xp_cmdshell
,当使用ipconfig
执行时,我们可以获取IP地址。但我认为只有在您拥有数据库管理员访问权限时才能使用此方法。我的主机是共享主机,因此我没有这样的特权。是否有其他方法可行?
请注意:我没有SQL Server 2008数据库上的管理员权限。我需要一个身份验证用户的解决方案。
另一个更新:
我已经找到了解决方案,适用于我的场景的查询是:
SELECT hostname, net_library, net_address
FROM sys.sysprocesses
WHERE spid = @@SPID
代码会根据需要执行,但是有一个问题,net_address不符合IP格式。以下是我的结果:
hostname net_library net_address
IPC03 TCP/IP AE8F925461DE
我很想知道:
这里的net_address是什么?是MAC地址还是某些IP地址等等?
是否有将net_address转换为IP的方法?