SSRS错误处理

时间:2010-01-22 20:53:32

标签: reporting-services

有没有办法自定义SSRS如何报告其日志?我希望SSRS向数据库报告订阅错误,有没有办法做到这一点?

谢谢

2 个答案:

答案 0 :(得分:1)

SSRS已将其订阅的状态记录到运行SSRS实例的服务器上的报表服务器。您可以在ReportServer上运行以下查询,它将显示订阅的上次运行状态。

我已将此查询与SSIS包一起使用,以复制报表服务器数据库以创建一个报表,该报表会向各个人发送报告,告诉他们报表服务器上存在的订阅状态

USE ReportServer

SELECT  
CatalogParent.Name ParentName, --Folder names 
Catalog.Name ReportName, --Actual rpt name
ReportCreatedByUsers.UserName ReportCreatedByUserName, --first deployed by
Catalog.CreationDate ReportCreationDate, --deployed on
ReportModifiedByUsers.UserName ReportModifiedByUserName, --last modification by
Catalog.ModifiedDate ReportModifiedDate, 
CountExecution.CountStart TotalExecutions, --total number of executions since deployment
ExecutionLog.InstanceName LastExecutedInstanceName, --server excuted on
ExecutionLog.UserName LastExecutedUserName, --user name 
ExecutionLog.Format LastExecutedFormat, --render format
ExecutionLog.TimeStart LastExecutedTimeStart, --start time
ExecutionLog.TimeEnd LastExecutedTimeEnd, --end time
-- These times need work, not always what you expect
ExecutionLog.TimeDataRetrieval LastExecutedTimeDataRetrieval,
ExecutionLog.TimeProcessing LastExecutedTimeProcessing,
ExecutionLog.TimeRendering LastExecutedTimeRendering,
-- end
ExecutionLog.Status LastExecutedStatus, --status of the report processing (not subscription)
ExecutionLog.ByteCount LastExecutedByteCount, -- bytes returned (just because i can)
ExecutionLog.[RowCount] LastExecutedRowCount,
SubscriptionOwner.UserName SubscriptionOwnerUserName, --subscription creator
SubscriptionModifiedByUsers.UserName SubscriptionModifiedByUserName, --subscription modifier
Subscriptions.ModifiedDate SubscriptionModifiedDate, --latest modification date
Subscriptions.Description SubscriptionDescription, --what the subscription does
Subscriptions.LastStatus SubscriptionLastStatus,
Subscriptions.LastRunTime SubscriptionLastRunTime --last time the subscription ran. this may be different to the last 
-- execution time especially if report is set to cache
FROM
dbo.Catalog JOIN dbo.Catalog CatalogParent --rs catalog (all things deployed to rs)
    ON Catalog.ParentID = CatalogParent.ItemID
JOIN dbo.Users ReportCreatedByUsers --all rs users
    ON Catalog.CreatedByID = ReportCreatedByUsers.UserID
JOIN dbo.Users ReportModifiedByUsers
    ON Catalog.ModifiedByID = ReportModifiedByUsers.UserID
LEFT JOIN (SELECT
            ReportID,
            MAX(TimeStart) LastTimeStart
           FROM
            dbo.ExecutionLog --self explanatory
           GROUP BY
            ReportID
           ) LatestExecution --gets the latest execution date rather than having a list longer than life
                ON Catalog.ItemID = LatestExecution.ReportID
LEFT JOIN (SELECT
            ReportID,
            COUNT(TimeStart) CountStart
           FROM
            dbo.ExecutionLog
           GROUP BY
            ReportID
           ) CountExecution -- gets the number of executions (because we can)
                ON Catalog.ItemID = CountExecution.ReportID
LEFT JOIN dbo.ExecutionLog
    ON LatestExecution.ReportID = ExecutionLog.ReportID
        AND LatestExecution.LastTimeStart = ExecutionLog.TimeStart
LEFT JOIN dbo.Subscriptions --subscription details
    ON Catalog.ItemID = Subscriptions.Report_OID
LEFT JOIN dbo.Users SubscriptionOwner --user info
    ON Subscriptions.OwnerID = SubscriptionOwner.UserID
LEFT JOIN dbo.Users SubscriptionModifiedByUsers --user info
    ON Subscriptions.OwnerID = SubscriptionModifiedByUsers.UserID
ORDER BY
CatalogParent.Name,
Catalog.Name 

在服务器上的LogFiles中记录和报告堆栈跟踪就不那么简单了!

答案 1 :(得分:0)

SSRS在与SSRS报告一起使用的SQL Server实例上具有默认日志记录机制。您可以在以下路径中找到日志文件。

C:\ Program Files \ Microsoft SQL Server \ MSRS11.MSSQLSERVER \ Reporting Services \ LogFiles

最顶层文件包含所有报告服务器日志,打开该文件并导航到最后以查看最新日志。