有没有一种方法可以告诉SQL Server 2008 Express将每个查询(包括每个SELECT查询!)记录到文件中?
这是一台开发机器,因此记录Select查询的负面影响并不是问题。
在有人建议使用SQL Profiler之前:Express中没有这个选项(是否有人知道Web Edition中是否有?),而我正在寻找一种即使我离开也可以记录查询的方法。
有没有一种方法可以告诉SQL Server 2008 Express将每个查询(包括每个SELECT查询!)记录到文件中?
这是一台开发机器,因此记录Select查询的负面影响并不是问题。
在有人建议使用SQL Profiler之前:Express中没有这个选项(是否有人知道Web Edition中是否有?),而我正在寻找一种即使我离开也可以记录查询的方法。
SQL Server Profiler:
有关更多信息,请参见 Microsoft: SQL Server 2008 Books Online - 使用 SQL Server Profiler
更新- SQL Express 版本:
有评论说 MS SQL Server Profiler 不适用于 Express 版本。
似乎有一个免费的替代品:Microsoft SQL Server 2005 Express 版本的分析器
还有一种获取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
虽然回答有点晚,但我希望对其他读者有用...
除非只在开发环境中使用,否则使用SQL Server Express处理诸如此类的高级审计要求并不是最优选择。
您可以使用跟踪(www.broes.nl/2011/10/profiling-on-sql-server-express/)获取所需数据,但您必须自己解析这些数据。
有第三方工具可以完成此操作,但其成本将相当高。ApexSQL的Log explorer可以记录所有内容,但选择和Idera公司的compliance manager也会记录选择语句,但它的成本要高得多。
仅供记录,我将包含使用DataWizard的SQL性能分析器的提示作为单独的答案,因为它与指向SQL Server Profiler的{{link2:答案}相反。
有14天的免费试用期,但即使您需要购买它,也只需20美元即可获得3个服务器(在撰写本文时,2012-06-28)。考虑到每个使用SQL Server Express版的人都节省了数千美元,这对我来说似乎更加公平。
到目前为止,我只使用过试用版,它提供了OP所寻找的功能:跟踪进入特定数据库的所有查询的方法。它还提供将跟踪导出到XML文件的选项。付费版本提供了一些更多的功能,但我还没有尝试过。
免责声明:我只是另一个开发人员,偶尔会搞乱DB,并且我与DataWizard没有任何关联。我碰巧喜欢他们的工具,并希望让人们知道它的存在,因为它帮助我对我的SQL Server Express安装进行了分析。