由于 FK 约束,报告订阅删除失败

Ron*_*red 5 sql-server constraint ssrs sql-server-2008-r2

我们有许多 SSRS 报告定时订阅(SQL Server 2008R2 SP4)。我们的一位报告开发人员尝试删除报告订阅,但出现以下错误:

报表服务器数据库中出现错误。这可能是由于数据库中的连接失败、超时或磁盘空间不足造成的。(rsReportServerDatabaseError) 获取联机帮助 DELETE 语句与 REFERENCE 约束“FK_ReportSchedule_Subscriptions”冲突。冲突发生在数据库“ReportServer”、表“dbo.ReportSchedule”、“SubscriptionID”列中。该语句已终止。

我通过从ReportServer.dbo.ReportSchedule表中手动删除计划记录解决了这个问题。

步骤如下:

1、找到需要删除的相关订阅。

SELECT sub.SubscriptionID, 
       rs.ScheduleID,
       SUB.[Description] 
       ,SUB.EventType 
       ,SUB.DeliveryExtension 
       ,SUB.LastRunTime
FROM dbo.Subscriptions AS SUB 
INNER JOIN dbo.Users AS USR ON SUB.OwnerID = USR.UserID 
INNER JOIN dbo.ReportSchedule AS RS ON SUB.Report_OID = RS.ReportID
                            AND SUB.SubscriptionID = RS.SubscriptionID 
WHERE SUB.Description like '%**Mail reciepient here**%'
ORDER BY sub.Description
Run Code Online (Sandbox Code Playgroud)

2. 找到防止记录被删除的相关时间表。

SELECT [ScheduleID]
      ,[ReportID]
      ,[SubscriptionID]
      ,[ReportAction]
FROM [ReportServer].[dbo].[ReportSchedule]
WHERE SubscriptionID = '**GUID HERE**'
Run Code Online (Sandbox Code Playgroud)

3.备份表

SELECT * 
  INTO [ReportServer].[dbo].[ReportScheduleBackup]
  FROM [ReportServer].[dbo].[ReportSchedule]
Run Code Online (Sandbox Code Playgroud)

4. 删除日程

DELETE FROM [ReportServer].[dbo].[ReportSchedule]
WHERE  ScheduleID ='**GUID HERE**'
Run Code Online (Sandbox Code Playgroud)

delete 命令删除了计划从保存 RS 数据库的 SQL 实例中删除了作业。该作业触发了定时订阅。

之后,我可以从报告 Web GUI 中删除报告定时订阅。

我的问题:

小智 2

过去几周我一直遇到同样的问题,并决定手动删除。我想我今天已经破解了。我将订阅表上的外键约束 [FK_ReportSchedule_Subscriptions] 与干净(工作)安装的 ssrs 上的外键约束进行了比较。在我的全新安装中,约束是使用 nocheck 设置的