我想知道使用SSRS的最慢的包。我不知道在哪个表中我可以找到每个包的持续时间。实际上sysssislog存储了包组件的开始/结束时间,但我不知道如何处理它。你能帮我找到合适的表甚至是sql查询吗?
答案 0 :(得分:1)
如果您启用了SQL Server日志记录,则dbo.sysssislog将仅存储启动/停止时间。
如果你有,那么我会很懒,并从SSIS Performance Framework中构建的一些查询开始。它们是在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;