共计 682 个字符,预计需要花费 2 分钟才能阅读完成。
在 SQL Server 中,获取客户端 IP 并不像获取其余数据库信息那样间接,但的确有一些办法能够实现。以下是一个罕用的办法:
首先,你须要应用零碎视图 sys.dm_exec_connections
。这个动静治理视图能够提供对于每个数据库连贯的信息,包含客户端的 IP 地址。以下是一个简略的查问例子:
SELECT
session_id,
client_net_address
FROM
sys.dm_exec_connections;
在这个查问中,session_id
是每个连贯的惟一标识符,而 client_net_address
就是客户端的 IP 地址。
然而,须要留神的是,这个查问只能获取到以后流动连贯的 IP 地址。如果客户端曾经断开连接,那么你将无奈获取到那个客户端的 IP 地址。
另外,这个查问须要 VIEW SERVER STATE 权限。如果你没有这个权限,那么你须要向数据库管理员申请。
再者,你也能够创立一个触发器或者存储过程,当新的连贯被建设时,自动记录下客户端的 IP 地址。这种办法须要更深刻的 SQL Server 常识,但能够提供更残缺的连贯历史信息。
最初,如果你的应用程序是通过一个中间层连贯到 SQL Server 的(例如,一个 Web 服务器或者应用服务器),那么你可能无奈间接获取到最终用户的 IP 地址。在这种状况下,你可能须要批改你的中间层,让它在每次数据库申请时,都把用户的 IP 地址作为一个参数传递给 SQL Server。
总的来说,获取客户端 IP 地址在 SQL Server 中可能须要一些额定的工作,然而通过应用零碎视图、触发器、存储过程,或者批改你的应用程序,你应该能够实现这个指标。
正文完