监视托管数据库对象并对其进行故障排除

适用范围:SQL Server

本文提供有关可用于监视和排查 SQL Server 中运行的托管数据库对象和程序集问题的工具的信息。

探查器跟踪事件

SQL Server 提供 SQL 跟踪和事件通知,用于监视数据库引擎中发生的事件。 通过记录指定的事件,SQL 跟踪可帮助你排查性能问题、审核数据库活动、收集测试环境的示例数据、调试 Transact-SQL 语句和存储过程,以及收集性能分析工具的数据。 有关详细信息,请参阅 SQL 跟踪扩展事件概述

事件 说明
SQL Server 事件类引用 用于监视程序集加载请求(成功和失败)。
SQL:BatchStarting 事件类SQL:BatchCompleted 事件类 提供有关已启动或已完成的 Transact-SQL 批处理的信息。
SP:Starting 事件类SP:Completed 事件类 用于监视 Transact-SQL 存储过程的执行。
SQL:StmtStarting 事件类SQL:StmtCompleted 事件类 用于监视 CLR 和 Transact-SQL 例程的执行。

性能计数器

SQL Server 提供性能监视器可用于监视运行 SQL Server 实例的计算机中的活动的对象和计数器。 对象是任何 SQL Server 资源,例如 SQL Server 锁或 Windows 进程。 每个对象有一个或多个计数器,用于确定所要监视对象的各方面信息。 有关详细信息,请参阅 使用 SQL Server 对象

Object 说明
SQL Server、CLR 对象 CLR 执行所花的总时间。

Windows 性能监视器 (perfmon.exe) 计数器

Windows 性能监视器(perfmon.exe)工具有多个性能计数器,可用于监视 CLR 集成应用程序。 可以通过 sqlservr 进程名称筛选 .NET CLR 性能计数器,以跟踪当前运行的 CLR 集成应用程序。

性能对象 说明
SqlServer:CLR 提供服务器的 CPU 统计信息。
.NET CLR Exceptions 跟踪每秒异常数。
.NET CLR Loading 提供有关服务器中加载的 AppDomains 和程序集的信息。
.NET CLR Memory 提供有关 CLR 内存使用量的信息。 如果内存使用量变得过大,则此对象可用于标记警报。
.NET Data Provider for SQL Server 跟踪每秒的连接数和断开连接数。 此对象可用于监视数据库活动的级别。

目录视图

目录视图返回由 SQL Server 数据库引擎使用的信息。 应使用目录视图,因为它们是目录元数据的最通用接口,并提供获取、转换和呈现此信息的自定义形式的最有效方法。 所有用户可用的目录元数据都通过目录视图来显示。 有关详细信息,请参阅 系统目录视图

目录视图 说明
sys.assemblies 返回有关在数据库中注册的程序集的信息。
sys.assembly_references 标识引用其他程序集的程序集。
sys.assembly_modules 返回有关在程序集中定义的每个函数、存储过程和触发器的信息。
sys.assembly_files 返回有关在数据库中注册的程序集文件的信息。
sys.assembly_types 标识由程序集定义的用户定义类型 (UDT)。
sys.module_assembly_usages 标识在其中定义 CLR 模块的程序集。
sys.parameter_type_usages 返回有关属于用户定义类型的参数的信息。
sys.server_assembly_modules 标识在其中定义 CLR 触发器的程序集。
sys.server_triggers 标识服务器上的服务器级别 DDL 触发器,包括 CLR 触发器。
sys.type_assembly_usages 标识在其中定义用户定义类型的程序集。
sys.types 返回在数据库中注册的系统和用户定义类型。

动态管理视图

动态管理视图和函数返回可用于监视服务器实例的运行状况、诊断故障以及优化性能的服务器状态信息。 有关详细信息,请参阅 系统动态管理视图

DMV 说明
sys.dm_clr_appdomains 提供有关服务器中每个应用程序域的信息。
sys.dm_clr_loaded_assemblies 标识在服务器上注册的每个托管程序集。
sys.dm_clr_properties 返回有关宿主 CLR 的信息。
sys.dm_clr_tasks 标识当前正在运行的所有 CLR 任务。
sys.dm_exec_cached_plans 返回有关 SQL Server 缓存的查询执行计划的信息,以便更快地执行查询。
sys.dm_exec_query_stats 返回缓存查询计划的聚合性能统计信息。
sys.dm_exec_requests 返回有关在 SQL Server 中执行的每个请求的信息。
sys.dm_os_memory_clerks 返回 SQL Server 实例中当前处于活动状态的所有内存 clerk,包括 CLR 内存 clerk。