从 SQL Trace 到扩展事件及实用数据库的应用
1. 扩展事件 .NET 提供程序
扩展事件拥有用于创建和读取会话的 .NET 对象模型,就像 SQL Trace 有 .NET 行集提供程序一样。不过,扩展事件读取器并非实时的,而是异步的。当连接时, MAX_DISPATCH_LATENCY
被设置为 3 秒,断开会话后, MAX_DISPATCH_LATENCY
会重置为原始值。若有多个读取器连接到同一会话,第一个断开的读取器会将 MAX_DISPATCH_LATENCY
重置为原始值,这可能不是期望的行为。若扩展事件引擎检测到向读取器发送数据有延迟,会断开该读取器,这遵循诊断监控的首要原则:服务器上最重要的工作负载是客户工作负载,诊断系统不应妨碍客户工作负载的运行。
扩展事件 .NET 对象模型分为元数据信息对象和实际运行的会话对象。
以下是使用 .NET 创建带有环形缓冲区目标的扩展事件会话,并读取内置 system_health
会话事件文件的代码示例:
private static void CreateStatementTrackingSession()
{
// The XEStore is a type of SFC store so we use the SqlStoreConnection
// and a SqlConnection to pass to the XEStore.
// Reference SFC and SqlS