我有一个很长的列表,列出了我想要监视的一个数据库中的一些运行缓慢的存储过程。我们正在运行SQL Server 2012企业版。我知道SQL Server分析器不再是推荐用于此的工具,任何建议?
提前致谢
答案 0 :(得分:0)
SQL Server支持在过程级别和查询级别上收集本机编译的存储过程的执行统计信息。由于性能影响,默认情况下不会启用收集执行统计信息。
您可以使用sys.sp_xtp_control_proc_exec_stats
(Transact-SQL)在本机编译的存储过程上启用和禁用统计信息收集。
答案 1 :(得分:0)
Extended Events是Profiler / SQL Trace的替代品。 Profiler提供的许多活动也可以在扩展事件和许多其他活动中使用。
如果您当前有一个过滤的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模板的模板。