【问题标题】:.net sql query logging using SSMS Tools pack使用 SSMS 工具包的 .net sql 查询日志记录
【发布时间】:2011-01-04 21:17:40
【问题描述】:

我刚刚从http://www.ssmstoolspack.com 安装了 SSMS 工具包,除了我无法从我的 .net 应用程序中查看查询外,一切似乎都正常工作。如果我通过管理工作室 SSMS 运行查询,则正确显示查询。但是在运行我的应用程序时,本地历史记录窗口中不会显示任何查询。

提到在连接字符串中启用日志记录,但我在任何地方都找不到对此的引用,我得到的最接近的是QueryLog_On="yes",但当我尝试使用它时出现异常Unrecognized attribute 'QueryLog_On'

有没有人使用过 SSMS 并且知道如何为 .net 应用程序设置查询日志记录?

【问题讨论】:

    标签: .net sql-server logging


    【解决方案1】:

    SSMS Toolpack 不是通用查询记录器,它是一个插件,用于缓存它“插入”到的应用程序(在本例中为 SSMS)的查询历史记录。

    如果这是您编写的 .NET 应用程序,您将需要让该应用程序缓存其自己的查询历史记录 - 可能像文本框一样简单,您在将每个查询发送到数据库服务器之前将其附加到该文本框.

    即使 SSMS 工具包不会做您想做的事情,您可以列出来自动态管理视图的最近执行的查询,但需要注意的是它只会列出尚未执行的查询尚未从缓存中刷新。这是一个示例,列出了仍在缓存中的最后 100 个查询 - 基于 Michelle Ufford 的查询:

    SELECT TOP 100
          DB_NAME(dest.[dbid]) AS 'database_name'
        , OBJECT_NAME(dest.objectid, dest.[dbid]) AS 'object_name'
        , dest.text AS 'query_text'
        , MAX(deqs.last_execution_time) AS 'last_execution'
    FROM sys.dm_exec_query_stats AS deqs
    Cross Apply sys.dm_exec_sql_text(deqs.sql_handle) AS dest
    GROUP BY DB_NAME(dest.[dbid])
        , OBJECT_NAME(dest.objectid, dest.[dbid])
        , dest.text
    ORDER BY MAX(deqs.last_execution_time) DESC
    OPTION (MaxDop 1);
    

    【讨论】:

    • 嗯我想知道是不是这样,所以查询日志没有什么价值。我一直在寻找 mysql 的查询日志之类的东西,一个简单的 tail 命令,你可以看到正在发生的任何事情。
    • 我已更新我的答案以包含一个查询,该查询检索 SQL Server 2005 及更高版本的 100 个最近执行的查询。谢谢!
    • 酷我会看看,我还找到了我正在查看的 anjlab 的 sql profiler sqlprofiler.googlepages.com
    【解决方案2】:

    anjlab 的 sql profiler sqlprofiler.googlepages.com 可以满足我的需要。它非常强大,具有良好的过滤功能,因此您可以通过用户数据库等进行限制

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多