当前位置: 首页 > 数据应用 > SqlServer

如何利用sqlserver的动态管理视图查看sql执行记录

时间:2023-06-28 15:16:15 SqlServer

sqlserver是一种广泛使用的关系型数据库管理系统,它提供了强大的数据存储和处理能力。在使用sqlserver进行数据操作时,有时我们需要查看sql执行记录,以便分析sql语句的执行效率和性能问题。那么,如何在sqlserver中查看sql执行记录呢?本文将介绍三种常用的方法。

方法一:利用sqlserver的动态管理视图

动态管理视图(DMV)是sqlserver提供的一种特殊的视图,它可以显示当前服务器实例的状态信息,包括连接、会话、事务、锁、缓存、执行计划等。通过查询DMV,我们可以获取到sql执行记录的相关信息,例如执行时间、逻辑读写次数、物理读写次数、CPU时间等。以下是一个简单的示例:

1.-查询当前数据库中最近执行过的sql语句及其相关信息

qs.execution_count AS exec_count, --执行次数

qs.total_logical_reads AS total_logical_reads, --总逻辑读次数

qs.total_logical_writes AS total_logical_writes, --总逻辑写次数

qs.total_physical_reads AS total_physical_reads, --总物理读次数

qs.total_worker_time AS total_cpu_time, --总CPU时间

qs.total_elapsed_time AS total_elapsed_time, --总执行时间

qs.last_execution_time AS last_exec_time --最后执行时间

FROM sys.dm_exec_query_stats AS qs --查询统计信息视图

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st --关联sql文本视图

ORDER BY qs.last_execution_time DESC --按最后执行时间降序排序

方法二:利用sqlserver的跟踪工具

跟踪工具是sqlserver提供的一种用于监视和分析服务器活动的工具,它可以捕获服务器上发生的事件,并将其保存到跟踪文件或跟踪表中。通过跟踪工具,我们可以查看sql执行记录的详细信息,例如事件类型、事件子类型、事件类别、事件数据等。以下是一个简单的示例:

1.-创建一个跟踪文件

DECLARE @trace_file VARCHAR(100) --跟踪文件路径

SET @trace_file = 'C:\\temp\\trace.sql' --设置跟踪文件路径

EXEC sp_trace_create @trace_id OUTPUT, 0, @trace_file --创建跟踪文件并返回跟踪ID

1.-添加需要捕获的事件和列

2.-以下为示例,可根据需要自行修改或添加

3.-事件ID和列ID可参考https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-trace-setevent-transact-sql?view=sql-server-ver15

EXEC sp_trace_setevent @trace_id, 10, 1, 1 --添加RPC:Completed事件和TextData列

EXEC sp_trace_setevent @trace_id, 10, 12, 1 --添加RPC:Completed事件和SPID列

EXEC sp_trace_setevent @trace_id, 10, 13, 1 --添加RPC:Completed事件和Duration列

EXEC sp_trace_setevent @trace_id, 10, 14, 1 --添加RPC:Completed事件和StartTime列

EXEC sp_trace_setevent @trace_id, 10, 15, 1 --添加RPC:Completed事件和EndTime列

1.-启动跟踪

2.-执行一些sql语句,例如

3.-停止跟踪

4.-关闭跟踪

5.-查看跟踪文件中的内容

方法三:利用sqlserver的执行计划

执行计划是sqlserver提供的一种用于显示sql语句的执行过程和资源消耗的工具,它可以帮助我们理解和优化sql语句的性能。通过执行计划,我们可以查看sql执行记录的关键信息,例如操作类型、操作成本、操作属性、操作输出等。以下是一个简单的示例:

1.-设置显示执行计划的选项

SET SHOWPLAN_TEXT ON --显示文本格式的执行计划

1.-SET SHOWPLAN_XML ON --显示XML格式的执行计划

2.-SET STATISTICS PROFILE ON --显示统计信息和文本格式的执行计划

3.-执行一个sql语句,例如

4.-查看执行计划的输出,例如