Sql server 如何在客户端拦截SQL流量

Sql server 如何在客户端拦截SQL流量,sql-server,Sql Server,我想记录客户端应用程序发送到我无权访问的远程SQL server的所有SQL。我正在考虑某种客户端代理,它可以记录和传递数据。它必须与客户端应用程序在同一台计算机上运行 任何想法都值得赞赏。SQL Server的协议TDS(“表格数据流”)默认情况下不加密,因此可以使用一个简单的数据包转发器来代理SQL Server连接和拦截命令(及其响应) TDS协议规范可从Microsoft网站获得,您可以编写自己的代理,以这种方式拦截命令: 然而,这是一项艰巨的任务。如果不需要捕获每个连接,您可以使用其他

我想记录客户端应用程序发送到我无权访问的远程SQL server的所有SQL。我正在考虑某种客户端代理,它可以记录和传递数据。它必须与客户端应用程序在同一台计算机上运行


任何想法都值得赞赏。

SQL Server的协议TDS(“表格数据流”)默认情况下不加密,因此可以使用一个简单的数据包转发器来代理SQL Server连接和拦截命令(及其响应)

TDS协议规范可从Microsoft网站获得,您可以编写自己的代理,以这种方式拦截命令:

然而,这是一项艰巨的任务。如果不需要捕获每个连接,您可以使用其他更简单的选项:

  • 如果控制应用程序的源代码,则只需修改所有数据库操作即可截取每个
    SqlCommand
    CommandText
    参数值
  • 您可以跳过编写代理而使用本机数据包捕获,您需要使用
    WinPCap
  • 您还可以使用SQL Server的分析功能获取执行的每个命令的日志:

您正在查找的被称为
SQL分析器

具体来说,您正在寻找一个API

我本人从未使用过剖析器的API,但看起来很有希望。
另外,请看另一个示例的问题

若你们想对一个正在工作的分析器客户端有一个印象,你们可以看看答案