1

我在我们的一个数据库中有一长串运行缓慢的存储过程,我想监控它们。我们正在运行 SQL Server 2012 企业版。我知道 SQL Server 探查器不再是推荐使用的工具,有什么建议吗?

提前致谢

4

2 回答 2

0

SQL Server 支持在过程级别和查询级别收集本机编译的存储过程的执行统计信息。由于性能影响,默认情况下不启用收集执行统计信息。

sys.sp_xtp_control_proc_exec_stats您可以使用(Transact-SQL)对本机编译的存储过程启用和禁用统计信息收集。

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-xtp-control-proc-exec-stats-transact-sql

于 2017-08-30T10:14:16.893 回答
0

扩展事件是 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 对象资源管理器在 Management-->Extended Events-->Sessions 下创建、管理和查看扩展事件跟踪。该工具还包括等效 Profiler 模板的模板。

于 2017-08-30T10:49:45.073 回答