【问题标题】:How to intercept SQL traffic client side如何拦截SQL流量客户端
【发布时间】:2017-01-09 04:41:20
【问题描述】:

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

任何想法表示赞赏。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

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

    TDS 协议规范可从 Microsoft 网站获得,您可以编写自己的代理来拦截命令:https://msdn.microsoft.com/en-us/library/dd304523.aspx?f=255&MSPPError=-2147217396

    但是,这是一项艰巨的任务。如果您不需要捕获每个连接,您还有其他更简单的选择:

    • 如果您控制应用程序的源代码,则只需修改所有数据库操作以拦截每个SqlCommandCommandTextParameter 值。
    • 您可以跳过编写代理而使用本机数据包捕获,您需要使用WinPCap:https://www.winpcap.org/
    • 您还可以使用 SQL Server 的 Profiling 功能来获取执行的每个命令的日志:What are the APIs used by SQL Profiler?

    【讨论】:

      【解决方案2】:

      您正在查找的内容称为SQL Profiler
      具体来说 - 您正在寻找一个 API。

      我自己从未使用过探查器的 API - 但 this one 看起来很有希望。
      另外 - 查看this question 以获取另一个示例。

      如果您想了解一个正在工作的分析器客户端,您可以查看this 答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 2021-03-22
        • 1970-01-01
        • 2017-03-08
        相关资源
        最近更新 更多