MSSQL Server 是否具有等同于 MySQL 的查询日志?

Mar*_*tin 8 log-files logging sql-server sql-server-2005 sql-server-2008

我使用 MySQL 已经很长时间了,发现一般查询日志和慢速查询日志对于找出服务器上发生的事情和识别瓶颈非常有用。

现在我需要使用 SQL Server。SQL Server 是否有类似的日志设施?如果有,他们叫什么?

Jim*_*m B 8

SQL Server 在各个表中保存有关所有查询的统计信息。您可以使用以下代码来确定运行时间最长的查询(从sys.dm_exec_query_stats表中)。

您应该运行以下 DBCC 命令:

此 DBCC 命令清除服务器缓存并重新启动查询运行时间的记录:

DBCC FREEPROCCACHE
Run Code Online (Sandbox Code Playgroud)

运行此查询以查找运行时间最长的查询:

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 
Run Code Online (Sandbox Code Playgroud)

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