0

我知道“ SQL Server Profiler ”,但是是否有任何工具或方法可用于监控客户端机器发出的 sql 查询?

目前在我脑海中的一些事情是:

1) SysInternals ProcMon 可以记录并判断客户端机器上的可执行进程何时连接到 sql server。是否有任何类似但更先进的工具可用于提供更多数据?

2) 任何可用于客户端机器的调试版本或检测版本的客户端库和 API 以允许此类操作?

4

1 回答 1

3

您可以从 ODBC 数据源管理器 (odbcad32.exe) 启用 ODBC 跟踪。它生成的日志文件相当神秘,但它会为您提供由该机器上的登录用户运行的 SQL 语句。还有一个标记为“所有用户身份的机器范围跟踪”的复选框,用于记录该机器上任何用户(包括服务)运行的所有 SQL 语句。

在您断开连接并重新连接到 SQL 服务器之前,可能不会开始记录。因此,重新启动连接到 SQL Server 的任何程序/服务是一个好主意。如果您启用了连接池,这一点尤其重要,即使有问题的程序已断开连接,它也会保持连接打开。

此外,Windows 64 位的 ODBC 数据源管理器有两个版本,一个用于 32 位,另一个用于 64 位。因此,您需要为正在跟踪的程序的适当位数启用日志记录。

更新:您的另一个选择是使用像Wireshark这样的工具。由于它具有位于网络驱动程序级别的能力,因此它可以拦截您所有的网络流量——包括但不限于 SQL。这些被称为TDS 数据包- Sybase SQL Server (ASE)Microsoft SQL ServerFreeTDS (w/ UnixODBC ) 使用的标准。

于 2013-05-18T03:25:04.110 回答