【发布时间】:2018-02-08 00:05:46
【问题描述】:
我在我们的一个数据库中有一长串运行缓慢的存储过程,我想对其进行监控。我们正在运行 SQL Server 2012 企业版。我知道 SQL Server 分析器不再是推荐使用的工具,有什么建议吗?
提前致谢
【问题讨论】:
标签: sql-server stored-procedures performance-monitor
我在我们的一个数据库中有一长串运行缓慢的存储过程,我想对其进行监控。我们正在运行 SQL Server 2012 企业版。我知道 SQL Server 分析器不再是推荐使用的工具,有什么建议吗?
提前致谢
【问题讨论】:
标签: sql-server stored-procedures performance-monitor
SQL Server 支持在过程级别和查询级别收集本机编译的存储过程的执行统计信息。由于性能影响,默认情况下不启用收集执行统计信息。
您可以使用sys.sp_xtp_control_proc_exec_stats (Transact-SQL) 对本机编译的存储过程启用和禁用统计信息收集。
【讨论】:
Extended Events 是 Profiler/SQL Trace 的替代品。 Profiler 提供的许多事件也可在 Extended Events 以及许多其他事件中使用。
如果您当前有一个过滤的 SQL 跟踪,包括写入翻转文件的 rpc_completed 和 sql_batch_completed 事件,下面的 DDL 会创建一个 XE 跟踪以将这些相同的事件捕获到具有翻转的扩展事件文件。
CREATE EVENT SESSION [cache] ON SERVER
ADD EVENT sqlserver.rpc_completed(
WHERE ([sqlserver].[like_i_sql_unicode_string]([statement],N'proc1')
OR [sqlserver].[like_i_sql_unicode_string]([statement],N'proc2')
OR [sqlserver].[like_i_sql_unicode_string]([statement],N'proc3'))),
ADD EVENT sqlserver.sql_batch_completed(SET collect_batch_text=(1)
WHERE ([sqlserver].[like_i_sql_unicode_string]([batch_text],N'proc1')
OR [sqlserver].[like_i_sql_unicode_string]([batch_text],N'proc2')
OR [sqlserver].[like_i_sql_unicode_string]([batch_text],N'proc3')))
ADD TARGET package0.event_file(SET filename=N'selected_proc_trace',max_file_size=(1024),max_rollover_files=(5))
WITH (
MAX_MEMORY=4096 KB
,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
,MAX_DISPATCH_LATENCY=30 SECONDS
,MAX_EVENT_SIZE=0 KB
,MEMORY_PARTITION_MODE=NONE
,TRACK_CAUSALITY=OFF
,STARTUP_STATE=OFF);
GO
可以使用管理-->扩展事件-->会话下的 SSMS 对象资源管理器创建、管理和查看扩展事件跟踪。该工具还包括等效 Profiler 模板的模板。
【讨论】: