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


54

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

这是一个开发机器,所以记录Select-Queries的负面影响不是问题。

在有人建议使用SQL Profiler之前:这在Express中不可用(是否有人知道它是否可用于Web Edition?),并且我正在寻找一种记录查询的方式,即使当我离开时。

61

SQL Server事件探查:

  • 文件 - >新建跟踪
  • 将显示 “常规” 选项卡。
  • 在这里您可以选择“保存到文件:”,以便将其记录到文件中。
  • 查看“事件选择”选项卡
  • 选择要记录的项目。
  • TSQL-> SQL:BatchStarting会让你sql选择
  • 存储过程 - > RPC:完成会让你存储过程。从微软

的更多信息:SQL Server 2008联机丛书 - Using SQL Server Profiler

更新 - SQL Express版本:

一个评论说,MS SQL Server事件探查器不提供易捷版。
目前确实出现了一个自由选择:Profiler for Microsoft SQL Server 2005 Express Edition

+2

谢谢。在Express中不可用:-( 23 9月. 082008-09-23 21:02:44

+2

我没有亲自尝试过这个,但是这里是: Microsoft SQL Server 2005 Express Edition Profiler http://sqlprofiler.googlepages.com/ 24 9月. 082008-09-24 04:52:34

  0

当我明天上班时,我会尝试这个替代方案针对mssql 2008. 24 9月. 082008-09-24 04:57:51

  0

我建议的工具目前不支持2008,但是我下载了源代码,更新了项目引用以引用2008 sdk,然后应用程序开始工作。我通过电子邮件向维护人员发送请求,要求他更新项目 24 9月. 082008-09-24 15:51:25

+1

更新:(1)该工具似乎不支持将日志保存到文件中。(2)如果您需要帮助获取源代码并更新该工具以便为您工作,请发送电子邮件至[email protected] 24 9月. 082008-09-24 17:21:56

  0

我试过这个免费的工具,它并没有向我显示实际的SQL查询,只是他们花了多长时间。虽然错了。 18 11月. 092009-11-18 11:17:47

  0

在“AnjiLab Sql Profiler”中选择SPStmtStarting以转储SELECT/INSERT/UPDATE/DELETE操作。 30 8月. 112011-08-30 14:38:15

  0

我用SqlProfilerExpress(开源),它工作得很好。我不是DBA,但我得到了一个基本的追踪,并得到了我所需要的。 14 10月. 112011-10-14 15:20:42

+1

他们似乎现在正在为SQL Profiler Express收费,而旧版本在公开声明时声称有一个新版本可用... 06 6月. 122012-06-06 14:29:22


3

您可以记录更改。使用更改数据捕获功能,SQL Server 2008将使这变得更加简单。但SQL Server不擅长记录SELECT。

它在理论上可能与分析器,但它会杀死你的表现。您可能会在桌面上“摆脱它”,但我认为您会注意到您的机器运行速度很慢,导致出现问题。在任何部署之后,它肯定无法工作。

其他一些人已经错过了一个重要的观点:除非他们在2008年改变了一些东西,我没有听说,你不能触发SELECT。

  0

谢谢。那么,这是一款开发机器,如果我可以打开/关闭该功能,则性能不是问题。捕捉生产环境中的选择无论如何看起来都像是一场灾难。 23 9月. 082008-09-23 21:05:46


0

我要么使用触发器,要么使用Red Gate等第三方软件检出SQL日志文件。

  0

红门日志拯救只提供插入,更新和删除。 23 9月. 082008-09-23 20:56:58


1

看来你可以使用T-SQL

http://support.microsoft.com/kb/283790/

这可能有助于创造的痕迹。


1

为了记录,我将提示使用DataWizard's SQL Performance Profiler作为单独的答案,因为它的确与answer pointing at SQL Server Profiler相反。

有14天的免费试用期,但即使您需要购买,3台服务器只需20美元(撰写时,2012年6月28日)。考虑到成千上万使用SQL Server Express版本的人已经保存了这对我来说似乎更公平。

我只使用了迄今为止的试用版,它提供了OP正在寻找的内容:一种跟踪进入特定数据库的所有查询的方法。它还提供将跟踪导出到XML文件。付费版本提供了一些更多的功能,但我还没有尝试过。

声明:我只是另一个开发人员不时与数据库混淆,我不隶属于DataWizard。我恰巧喜欢他们的工具,并想让人们知道它的存在,因为它帮助我分析了我的SQL Server Express安装。除非它只是在开发环境

  0

当一家公司决定采用之前开源且免费的产品时,它会以错误的方式蹭我,然后完全嵌入免费版本以销售它。我了解将时间投入到一个项目中并希望将其变现。但是将旧版本放在那里,并且不要在你关闭某人的工作安装的地方拉一个红门(.Net Reflector)。我只使用Anjlab,因为它是免费的。如果我打算在一个工具上花费20美元,我想我宁愿花50美元购买包含SQL Profiler的SQL Server Developer Edition,以及几乎所有SQL Server所提供的功能。 21 8月. 122012-08-21 21:30:39

+1

@Sam:感谢您的评论。我不知道有一个SQL Server的Developer Edition! 50美元是一笔相当不错的交易。我同意你的观点,旧版本的软件应该仍然可用。但对于新用户来说,我真的不感到痛苦。他们要么买它,要么不买。 22 8月. 122012-08-22 08:06:06


28

...后期的答案,但我希望这将是这里其他读者有用...

使用SQL Server Express具有先进的审计要求,如这是不是真的最佳。

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

有第三方工具可以做到这一点,但他们的成本会相当高。来自ApexSQL的Log explorer可以记录一切,但选择和Idera’s合规性经理将记录选择语句,但它的成本要高得多。

  0

使用SQL Server 2014 Express提供的分析器是否有所改进? 06 11月. 152015-11-06 21:50:41


25

还有就是要获取有关对MS SQL Server Express的这里描述的被执行的查询信息的另一种方式: http://blog.sqlauthority.com/2008/01/03/sql-server-2005-last-ran-query-recently-ran-query/

简单地说,它运行智能查询系统表和获取信息(文字,时执行)关于查询(或者需要时缓存的查询计划)。因此,您可以在MSSQL 2008 Express版本中获取有关执行查询的信息,而无需使用profiler。

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 
+2

Imho在真实和快速解决方案方面的最佳答案,谢谢! 27 1月. 142014-01-27 15:18:11

+1

是的 - 这完成了!谢谢! +1。 16 8月. 152015-08-16 18:12:24