2008-09-23 93 views
54

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

这是一个开发机器,所以记录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中不可用:-( – 2008-09-23 21:02:44

+2

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

+0

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

3

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

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

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

+0

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

0

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

+0

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

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安装。除非它只是在开发环境

28

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

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

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

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

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 
相关问题