Skip to main content

Failed Subscription Alerting T-SQL Script

USE ReportServer
GO

DECLARE @count INT

SELECT
    Cat.[Name],
    Rep.[ScheduleId],
    Own.UserName,
    ISNULL(REPLACE(Sub.[Description],'send e-mail to ',''),' ') AS Recipients,
    Sub.[LastStatus],
    Cat.[Path],
    Sub.[LastRunTime]
INTO
    #tFailedSubs
FROM
    dbo.[Subscriptions] Sub with (NOLOCK)
INNER JOIN
    dbo.[Catalog] Cat with (NOLOCK) on Sub.[Report_OID] = Cat.[ItemID]
INNER JOIN
    dbo.[ReportSchedule] Rep with (NOLOCK) ON (cat.[ItemID] = Rep.[ReportID] and Sub.[SubscriptionID] =Rep.[SubscriptionID])
INNER JOIN
    dbo.[Users] Own with (NOLOCK) on Sub.[OwnerID] = Own.[UserID]
WHERE
Sub.[LastStatus] NOT LIKE '%was written%' --File Share subscription
AND Sub.[LastStatus] NOT LIKE '%pending%' --Subscription in progress. No result yet
AND Sub.[LastStatus] NOT LIKE '%mail sent%' --Mail sent successfully.
AND Sub.[LastStatus] NOT LIKE '%New Subscription%' --New Sub. Not been executed yet
AND Sub.[LastStatus] NOT LIKE '%been saved%' --File Share subscription
AND Sub.[LastStatus] NOT LIKE '% 0 errors.' --Data Driven subscription
AND Sub.[LastStatus] NOT LIKE '%succeeded%' --Success! Used in cache refreshes
AND Sub.[LastStatus] NOT LIKE '%successfully saved%' --File Share subscription
AND Sub.[LastStatus] NOT LIKE '%New Cache%' --New cache refresh plan
-- AND Sub.[LastRunTime] > GETDATE()-1

-- If any failed subscriptions found, proceed to build HTML & send mail.
SELECT @count = COUNT(*) FROM #tFailedSubs

IF (@count>0)

    BEGIN

    DECLARE @EmailRecipient NVARCHAR(1000)
    DECLARE @SubjectText NVARCHAR(1000)
    DECLARE @ProfileName NVARCHAR(1000)
    DECLARE @tableHTML1 NVARCHAR(MAX)
    DECLARE @tableHTMLAll NVARCHAR(MAX)

    SET NOCOUNT ON
   
    SELECT @EmailRecipient = 'Changeme@craigporteous.com'
    SET @SubjectText = 'Failed SSRS Subscriptions'

    --Set DB Mail profile to use
    SELECT TOP 1 @ProfileName = [Name] FROM msdb.dbo.sysmail_profile WHERE [Name] = 'Alert-BI-Admins'
   
    SET @tableHTML1 =

          N'<H3 style="color:red; font-family:verdana">Failed SSRS Subscription details. Please resolve & re-run jobs</H3>' +
          N'<p align="left" style="font-family:verdana; font-size:8pt"></p>' +
          N'<table border="2" style="font-size:8pt; font-family:verdana; text-align:left">' +
          N'<tr style="color:black; font-weight:bold">' +
          N'<th>Report Name</th><th>SQL Agent Job ID</th><th>Owner Username</th><th>Distribution</th><th>Error Message</th><th>Report Location</th><th>Last Run Time</th></tr>' +
          CAST((
                SELECT
                        td = t.[Name],'',
                        td = t.[ScheduleId],'',
                        td = t.[UserName],'',
                        td = t.[Recipients],'',
                        td = t.[LastStatus],'',
                        td = t.[Path],'',
                    td = t.[LastRunTime]
                FROM
                        #tFailedSubs t
                FOR XML PATH('tr'), TYPE)
          AS NVARCHAR(MAX) ) +
          N'</table>'

SET @tableHTMLAll = ISNULL(@tableHTML1,'')

IF @tableHTMLAll <> ''
   
    BEGIN

    --SELECT @tableHTMLAll
          EXEC msdb.dbo.sp_send_dbmail
                @profile_name = @ProfileName,
                @recipients = @EmailRecipient,
                @body = @tableHTMLAll,
                @body_format = 'HTML',
                @subject = @SubjectText
    END

SET NOCOUNT OFF

DROP TABLE #tFailedSubs

END  

Comments

Popular posts from this blog

Exception deserializing the package "The process cannot access the file because it is being used by another process."

TITLE: Microsoft Visual Studio ------------------------------ Failed to start project ------------------------------ ADDITIONAL INFORMATION: Exception deserializing the package "The process cannot access the file 'E:\SSASCube\HistoricalDataLoad\HistoricalDataLoad\bin\Development\HistoricalDataLoad.ispac' because it is being used by another process.". (Microsoft.DataTransformationServices.VsIntegration) ------------------------------ The process cannot access the file 'E:\SSASCube\HistoricalDataLoad\HistoricalDataLoad\bin\Development\HistoricalDataLoad.ispac' because it is being used by another process. (mscorlib) ------------------------------ BUTTONS: OK ------------------------------ While running SSIS package i got the error “The process cannot access the file ‘*.ispac’ because it is being used by another process”. I tried to close SSDT and run it again but, I still got the same error while compiling. Then, after searching over internet, I got...

SSRS INTERVIEW QUESTIONS

Q: What is SSRS? Ø   SSRS or SQL Server Reporting Service is a server-based report generation software systems from Microsoft and is part of Microsoft BI. Ø   It is used for preparing and delivering interactive and variety of reports. Ø   It is administered through an web based interface. Ø   Reporting services utilizes a web service interface for supporting and developing of customized reporting applications. Ø   SSRS lets you create very rich reports (Tabular/Graphical/Interactive) from various datasources with rich data visualization (Charts, Maps, sparklines) Ø   SSRS allows are reports to be exported in various formats (Excel, PDF, word etc) Q: Explain SSRS Architecture? Reporting services architecture comprises of integrated components. It is a multi-tiered, included with application, server and data layers. This architecture is scalable and modular. A single installation can be used across multiple computers. It includes the fo...

Failed to execute the package or element. Build errors were encountered

Error: TITLE: Microsoft Visual Studio ------------------------------ Failed to execute the package or element.   Build errors were encountered. For more information, see the Output window. ------------------------------ BUTTONS: OK ------------------------------   Solution: We tried to close SSDT and run it again but, we still got the same error while running SSIS package. Then, we need to follow bellow solution: Step 1: Go to Task Manager–> Details Tab. Step 2: Locate the process “ DtsDebugHost.exe “. Kill this process. There might be multiple instances of this process. Kill all of them. Step 3: Rerun SSIS package