首页 > 解决方案 > CTE 循环直到出现下一个 TextData 字段

问题描述

下午所有,

立即道歉。我是使用 CTE 的新手,他们仍然让我感到困惑。

我目前正在通过一些 SQL 跟踪来确定对我们的 SQL 环境的 API 调用存在问题,并且怀疑导致了广泛的延迟。

我需要能够确定每个查询运行了多长时间以及发生了哪些语句类型。但是,查询存在于 RPC:Starting Line (EventClass 11) 中,持续时间/语句类型 (ObjectName) 存在于 EventClass 11 行之后的 QLTransaction 行 (EventClass 50) 中。更复杂的是,只有当 EventSubClass 为 0 时,我才需要所有 EventSubClasses 和 Statement Type 的持续时间。

以下 SQL Fiddle 有一个示例数据范围(出于 GDPR 目的,我不得不编辑 TextData,但在这种情况下,每个条目都是不同的,实际数据中有重复项):- http://sqlfiddle.com/#!7 /88857/4/1

我希望看到的输出如下:

RowNumber   EventClass  TextData            StartTime          ApplicationName  Duration    EndTime     EventSubClass   ObjectName
244         11          *** REDACTED 1 ***  18/06/2018 12:14   (null)           (null)      (null)      (null)          (null)
245         11          *** REDACTED 2 ***  18/06/2018 12:14   (null)           34791       (null)      (null)          CREATE TABLE, INSERT, sort_init, sort_init, DROPOBJ, FCheckAndCleanupCachedTempTable
258         11          *** REDACTED 3 ***  18/06/2018 12:14   (null)           (null)      (null)      (null)          (null)
261         11          *** REDACTED 4 ***  18/06/2018 12:14   (null)           (null)      (null)      (null)          (null)
262         11          *** REDACTED 5 ***  18/06/2018 12:14   (null)           (null)      (null)      (null)          (null)
263         11          *** REDACTED 6 ***  18/06/2018 12:14   (null)           12402       (null)      (null)          sort_init, sort_init
268         11          *** REDACTED 7 ***  18/06/2018 12:14   (null)           (null)      (null)      (null)          (null)

提前谢谢了

标签: sql-servercommon-table-expressionsql-server-2016

解决方案


推荐阅读