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

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...

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...

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