我们有一个 SQL Server 2005 数据库,多年来开发的各种程序都在使用该数据库。大多数这些程序使用 sa 登录来访问数据库。我的工作是弄清楚哪个系统将数据库用于什么目的,以便我们可以开始创建具有适当权限的登录名或以其他方式管理访问权限。
我想知道,对于给定的连接,登录了哪些 IP 以及执行了哪些语句。我怎样才能获得这些信息,并且可以在不显着降低数据库服务器速度的情况下做到这一点吗?
我们有一个 SQL Server 2005 数据库,多年来开发的各种程序都在使用该数据库。大多数这些程序使用 sa 登录来访问数据库。我的工作是弄清楚哪个系统将数据库用于什么目的,以便我们可以开始创建具有适当权限的登录名或以其他方式管理访问权限。
我想知道,对于给定的连接,登录了哪些 IP 以及执行了哪些语句。我怎样才能获得这些信息,并且可以在不显着降低数据库服务器速度的情况下做到这一点吗?
由于您使用的是 SQL2005,因此您可以使用 LOGON 触发器来捕获进程何时使用 sa 登录。触发器中可用的 EVENTDATA 为您提供了大量有关连接的信息,包括连接客户端的主机名或 IP。
从那里,您可以创建服务器跟踪以了解会话正在做什么。您也许可以在触发器中做到这一点 - 我找不到任何说您不能的东西,但我自己也没有尝试过。
我不知道基于 IP 地址的方法。
一种方法是:
另一种方法是:
是的,我相当肯定 SQL 2005 完整版附带的 SQL 分析器工具将启用该流量的客户端 IP 地址跟踪。如果您使用的是 SQL Express,请获取此信息: http ://sqlprofiler.googlepages.com 。编辑配置文件跟踪,以便它记录最少的信息,然后跟踪所需的任何时间段,您应该能够全部弄清楚。