MSSQL服务器有相当于MySQL的查询日志吗?

我已经使用了很久的MySQL,并且发现了一般的查询日志和慢速查询日志对于发现服务器上发生的事情以及发现瓶颈非常有用。

现在我需要使用SQL Server。 SQL Server有类似的日志function吗? 如果是这样,他们叫什么?

SQL服务器保存有关各种表中所有查询的统计信息。 您可以使用下面的代码来确定最长的运行查询是什么(从sys.dm_exec_query_stats表中)。

您应该运行以下DBCC命令:

此DBCC命令清除服务器caching并重新启动查询运行时间的日志logging:

 DBCC FREEPROCCACHE 

运行此查询来查找最长的运行查询:

 SELECT DISTINCT TOP 10 t.TEXT QueryName, s.execution_count AS ExecutionCount, s.max_elapsed_time AS MaxElapsedTime, ISNULL(s.total_elapsed_time / s.execution_count, 0) AS AvgElapsedTime, s.creation_time AS LogCreatedOn, ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec FROM sys.dm_exec_query_stats s CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t ORDER BY s.max_elapsed_time DESC GO 

您还应该看一下Technet杂志上的文章“ 优化SQL Server查询性能” ,其中有一个查询,用于确定哪个查询是最昂贵的读取I / O查询,以及有关如何查看执行计划和其他优化的指导。

您可以使用SQL事件探查器实时监视系统,以识别运行缓慢的语句。

SQL还可以build议您可能想要添加或消除的索引: http : //msdn.microsoft.com/zh-cn/library/ms187974.aspx

您还可以在SQL Management Studio中查看与长查询有关的报告:右键单击您的服务器名称>报告>标准报告>性能 – 热门查询按…

旧的慢查询保存在MSSQL中。 这已经在这里解决了:

http://blog.brianhartsock.com/2008/12/16/quick-and-dirty-sql-server-slow-query-log/