在SQL Server 2008 Express数据库上记录所有查询?

Mic*_*tum 57 sql-server

有没有办法告诉SQL Server 2008 Express将每个查询(包括每个SELECT查询!)记录到一个文件中?

它是一台开发机器,因此记录Select-Queries的负面影响不是问题.

在有人建议使用SQL事件探查器之前:这在Express中不可用(有人知道它是否可以在Web版中使用?)而且我正在寻找一种方法来记录查询,即使我不在.

Kyl*_*ser 65

SQL Server Profiler:

  • 文件→新跟踪
  • 将显示"常规"选项卡.
  • 在这里,您可以选择"保存到文件:",以便将其记录到文件中.
  • 查看"事件选择"选项卡
  • 选择要记录的项目.
  • TSQL→SQL:BatchStarting将为您提供sql选择
  • 存储过程→RPC:已完成将为您提供存储过程.

来自Microsoft的更多信息:SQL Server 2008联机丛书 - 使用SQL Server Profiler

更新 - SQL Express Edition:

有人评论说,MS SQL Server Profiler不适用于快速版.
似乎有一个免费的替代方案: Microsoft SQL Server 2005 Express Edition的Profiler

  • 谢谢.虽然不适用于Express :-( (4认同)
  • 我没有亲自尝试过这个,但它是:Microsoft SQL Server 2005 Express Edition的Profiler http://sqlprofiler.googlepages.com/ (2认同)

小智 28

...迟到的答案,但我希望这对其他读者有用......

使用具有高级审计要求的SQL Server Express并不是最佳选择,除非它仅在开发环境中.

您可以使用跟踪(www.broes.nl/2011/10/profiling-on-sql-server-express/)来获取所需的数据,但您必须自己解析这些数据.

有第三方工具可以做到这一点,但他们的成本将非常高.来自ApexSQL的日志浏览器可以记录所有内容,但是选择并且Idera的合规性管理器也会记录选择语句,但它的成本要高得多.


Dmy*_*hyn 28

还有一种方法可以获取有关在此处描述的 MS SQL Server Express上执行的查询的信息.

简而言之,它对系统表运行智能查询,并获取有关查询的信息(文本,时间执行)(如果需要,还可以获得缓存的查询计划).因此,您可以在MSSQL 2008 Express版本中获取有关没有分析器的已执行查询的信息.

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
Run Code Online (Sandbox Code Playgroud)

  • Imho是真实和快速解决方案的最佳答案,谢谢! (2认同)