0

我想知道使用 SSRS 最慢的包。我不知道在哪个表中可以找到每个包裹的持续时间。实际上 sysssislog 存储包组件的开始/结束时间,但我不知道如何处理它。你能帮我找到合适的表,甚至是要使用的 sql 查询吗?

4

1 回答 1

1

如果您启用了 SQL Server 日志记录,dbo.sysssislog 只会存储开始/停止时间。

如果你有,那么我会很懒惰,从SSIS 性能框架中构建的一些查询开始。它们是为 2005 年构建的,因此您需要将引用从 sysdtslog90 更改为 sysssislog。此外,如果您正在关注这些查询,您可能希望记录更多仅启动/停止但基本逻辑合理的事件。

如果您只想简单明了,那么您可以编写这样的查询来开始。

WITH STARTS AS
(
    -- Find the execution ids for all the start events
    SELECT
        S.executionid
    ,   S.starttime
    ,   S.source
    FROM
        dbo.sysssislog AS S
    WHERE
        S.event = 'PackageStart'
)
, STOPS AS
(
    -- Find the execution ids for all the start events
    SELECT
        S.executionid
    ,   S.starttime
    ,   S.source
    FROM
        dbo.sysssislog AS S
    WHERE
        S.event = 'PackageEnd'
)
SELECT
    A.source AS PackageName
,   A.starttime AS StartTime
,   COALESCE(B.starttime, CURRENT_TIMESTAMP) AS PackageEndTime
,   DATEDIFF(mi, a.starttime, COALESCE(B.starttime, CURRENT_TIMESTAMP)) AS PackageDuration_M
FROM
    STARTS A
    -- Lots of reasons there may not be an end time
    LEFT OUTER JOIN
    STOPS B
        ON A.executionid = B.executionid;
于 2013-05-13T18:08:05.440 回答