none
SSRS Abonnements stoppen nach Fehlerversand. Wie erhält man eine Mitteilung bzw. kann das Abo automatisch resetten? RRS feed

  • Frage

  • Hallo zusammen,

    ab und an kommt es vor, dass ein Abo-Versand auf Grund von Serverproblemen nicht läuft. Leider versagt ab diesem Zeitpunkt das Abo vollständig. Mann muss also in das Abo gehen und ohne Änderungen mit o.k. bestätigen. Das Ausrufezeichen verschwindet und das Abo läuft ab da wieder wie gewünscht.

    Bei einer hohen Abo-Anzahl mehr als unschön. Wie kann man hier den Prozess automatisieren oder erhält zumindest eine Info. Beschwerden über User sind unschön, vor allem, wenn es temporär erzeugte Dateien zum Stichtag sind die man nicht mehr oder nur schwer erzeugen kann.

    Vielen Dank für kreative Ideen oder Lösungsvorschläge.

    Gruß
    Chris

    Montag, 3. September 2018 15:08

Antworten

  • Hallo Chris,

    warum die Abos komplett den Dienst einstellen, kann ich nicht nachvollziehen.

    Aber ich überwache unsere Abos mit einem Report, den ich mir täglich zuschicken lasse und der mir die Fehler in den letzten 5 Tagen zeigt.

    HTH!

    Use ReportServer
    go
    with s_cte as
    (SELECT eventtype, laststatus, LastRunTime, report_oid, SubscriptionID, Description, cast(extensionsettings as xml) ext_xml
    from dbo.subscriptions
    )
    select  s.EndDate, upper( s.scheduleid) as sqlagent_job_name,  u.username as owner,
    replace(c.path,'/'+ c.name,'') as reportpath,	c.name as reportname, s_cte.Description,
    laststatus, s_cte.LastRunTime,
    
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="PATH"][1]/Value[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="TO"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="TO"][1]/Value[1]/text()[1])', 'varchar(200)' )) as 'to recipient list',
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="CC"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="CC"][1]/Value[1]/text()[1])', 'varchar(200)' ))  as 'cc email recipient list',
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="BCC"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="BCC"][1]/Value[1]/text()[1])', 'varchar(200)' )) as 'bcc email recipient list'
    
    from         
      dbo.[catalog] c
    left join dbo.reportschedule rs on   rs.reportid = c.itemid 
    inner join dbo.schedule s on   rs.scheduleid = s.scheduleid 
    left join dbo.Users u on U.UserID = S.CreatedById
    left join s_cte on s_cte.report_oid = c.itemid and s_Cte.SubscriptionID = rs.SubscriptionID
    where s_cte.laststatus like 'failure%'
    or s_cte.laststatus like 'Fehler%'
    and (EndDate is null or EndDate > GETDATE()-2)
    Union all
    -- Fehler bei SnapShots innerhalb der letzten 5 Tage
    select s.EndDate, upper( s.scheduleid) as sqlagent_job_name,  u.username as owner, 	
    replace(c.path,'/'+ c.name,'') as reportpath,	c.name as reportname, s_cte.Description, L.Status, L.TimeStart, 
    
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="PATH"][1]/Value[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="TO"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="TO"][1]/Value[1]/text()[1])', 'varchar(200)' )) as 'to recipient list',
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="CC"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="CC"][1]/Value[1]/text()[1])', 'varchar(200)' ))  as 'cc email recipient list',
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="BCC"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="BCC"][1]/Value[1]/text()[1])', 'varchar(200)' )) as 'bcc email recipient list'
    
    from dbo.[catalog] c
    left join dbo.reportschedule rs on   rs.reportid = c.itemid 
    inner join dbo.schedule s on   rs.scheduleid = s.scheduleid 
    left join s_cte on s_cte.report_oid = c.itemid  
    left join dbo.Users u on U.UserID = S.CreatedById
    inner join dbo.ExecutionLogStorage L
    on c.ItemID = L.ReportID
    where Status <> 'rsSuccess'
    and datediff(dd,TimeStart,GETDATE()) < 5
    and L.Format is null
    and Not exists(
    select *
    from dbo.ExecutionLogStorage L1
    where L1.ReportID = L.ReportID
    and L1.TimeStart > L.TimeStart
    and L1.Format is null
    )
    and (EndDate is null or EndDate > GETDATE()-2)


    Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu

    Dienstag, 4. September 2018 08:15

Alle Antworten

  • Vielleicht liest du hier noch mal nach:
    https://docs.microsoft.com/de-de/sql/reporting-services/subscriptions/monitor-reporting-services-subscriptions?view=sql-server-2017

    Mit den Batchautomatisierungen ist es immer ein Problem, wenn die Zielressource zur Ablage nicht verfügbar ist.
    Deshalb gehen wir i.d.R. so vor, dass die Reports lokal zum Abholen durch die User (Netzfreigaben) zur Verfügung gestellt werden.
    Dadurch gibt es das Problem nicht mehr, dass die Berichte erst gar nicht erstellt werden können da die Ablage nicht erreichbar war.

    Ins besonders mit Berichten, die eben nicht wiederholbar sind weil sie dann bereits einen andern Status aufweisen, würde ich mich nie von fremden Ressoucen abhängig machen.

    Montag, 3. September 2018 17:27
  • Hallo Chris,

    warum die Abos komplett den Dienst einstellen, kann ich nicht nachvollziehen.

    Aber ich überwache unsere Abos mit einem Report, den ich mir täglich zuschicken lasse und der mir die Fehler in den letzten 5 Tagen zeigt.

    HTH!

    Use ReportServer
    go
    with s_cte as
    (SELECT eventtype, laststatus, LastRunTime, report_oid, SubscriptionID, Description, cast(extensionsettings as xml) ext_xml
    from dbo.subscriptions
    )
    select  s.EndDate, upper( s.scheduleid) as sqlagent_job_name,  u.username as owner,
    replace(c.path,'/'+ c.name,'') as reportpath,	c.name as reportname, s_cte.Description,
    laststatus, s_cte.LastRunTime,
    
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="PATH"][1]/Value[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="TO"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="TO"][1]/Value[1]/text()[1])', 'varchar(200)' )) as 'to recipient list',
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="CC"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="CC"][1]/Value[1]/text()[1])', 'varchar(200)' ))  as 'cc email recipient list',
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="BCC"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="BCC"][1]/Value[1]/text()[1])', 'varchar(200)' )) as 'bcc email recipient list'
    
    from         
      dbo.[catalog] c
    left join dbo.reportschedule rs on   rs.reportid = c.itemid 
    inner join dbo.schedule s on   rs.scheduleid = s.scheduleid 
    left join dbo.Users u on U.UserID = S.CreatedById
    left join s_cte on s_cte.report_oid = c.itemid and s_Cte.SubscriptionID = rs.SubscriptionID
    where s_cte.laststatus like 'failure%'
    or s_cte.laststatus like 'Fehler%'
    and (EndDate is null or EndDate > GETDATE()-2)
    Union all
    -- Fehler bei SnapShots innerhalb der letzten 5 Tage
    select s.EndDate, upper( s.scheduleid) as sqlagent_job_name,  u.username as owner, 	
    replace(c.path,'/'+ c.name,'') as reportpath,	c.name as reportname, s_cte.Description, L.Status, L.TimeStart, 
    
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="PATH"][1]/Value[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="TO"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="TO"][1]/Value[1]/text()[1])', 'varchar(200)' )) as 'to recipient list',
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="CC"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="CC"][1]/Value[1]/text()[1])', 'varchar(200)' ))  as 'cc email recipient list',
    coalesce(ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="BCC"][1]/Field[1]/text()[1])', 'varchar(200)' ),
    ext_xml.value('(/ParameterValues[1]/ParameterValue[Name="BCC"][1]/Value[1]/text()[1])', 'varchar(200)' )) as 'bcc email recipient list'
    
    from dbo.[catalog] c
    left join dbo.reportschedule rs on   rs.reportid = c.itemid 
    inner join dbo.schedule s on   rs.scheduleid = s.scheduleid 
    left join s_cte on s_cte.report_oid = c.itemid  
    left join dbo.Users u on U.UserID = S.CreatedById
    inner join dbo.ExecutionLogStorage L
    on c.ItemID = L.ReportID
    where Status <> 'rsSuccess'
    and datediff(dd,TimeStart,GETDATE()) < 5
    and L.Format is null
    and Not exists(
    select *
    from dbo.ExecutionLogStorage L1
    where L1.ReportID = L.ReportID
    and L1.TimeStart > L.TimeStart
    and L1.Format is null
    )
    and (EndDate is null or EndDate > GETDATE()-2)


    Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu

    Dienstag, 4. September 2018 08:15