Die Herausforderung: E-Mail-Empfänger in SSRS-Abonnements
Das Anlegen von Abonnements in SSRS ist ein einfacher Prozess, der es Benutzern ermöglicht, spezifische Berichte zu abonnieren, die zu vordefinierten Zeiten automatisch generiert und versendet werden. Diese Abonnements können so konfiguriert werden, dass Berichte an eine Liste von E-Mail-Empfängern gesendet werden, was eine breite Verteilung von Informationen ermöglicht. Allerdings bietet SSRS keine direkte, benutzerfreundliche Methode, um eine umfassende Übersicht über alle E-Mail-Empfänger dieser Abonnements zu erstellen. Diese Einschränkung kann für Administratoren, die die Verteilung von Berichten überwachen und verwalten möchten, besonders problematisch sein.
Die Lösung: Direkte Abfragen der ReportServer-Datenbank
Um dieses Informationsdefizit zu überbrücken, bietet der direkte Zugriff auf die ReportServer-Datenbank eine leistungsfähige Alternative. Durch das Ausführen von SQL-Abfragen direkt auf der Datenbank können Administratoren detaillierte Einblicke in die Abonnements und ihre E-Mail-Empfänger erhalten. Diese Methode erfordert zwar ein gewisses Maß an technischem Know-how und Verständnis der SSRS-Datenbankstruktur, bietet jedoch eine umfassende Lösung für das Problem.
Implementierung: Ein Blick unter die Haube
Die ReportServer-Datenbank speichert alle relevanten Informationen zu Berichten, Abonnements und Benutzerkonfigurationen. Insbesondere die Tabellen Subscriptions
, Users
, und Catalog
enthalten Schlüsselinformationen, die für die Abfrage von Abonnenteninformationen notwendig sind. Eine effektive Abfrage könnte wie folgt aussehen:
USE ReportServer;
Declare @txtEmail nvarchar(100);
set @txtEmail = 'info@onlinedatawarehouse.de';
WITH subscriptionXmL AS (
SELECT SubscriptionID, OwnerID, Report_OID, Locale, InactiveFlags
, ExtensionSettings, ExtensionSettingsXML = CONVERT(xml, ExtensionSettings)
, ModifiedByID, ModifiedDate, [Description], LastStatus
, EventType, MatchData, LastRunTime, [Parameters]
, DeliveryExtension, [Version]
FROM ReportServer.dbo.Subscriptions
)
, SettingsCTE AS (
SELECT SubscriptionID, ExtensionSettings
, SettingName = ISNULL(Settings.value('(./*:Name/text())[1]', 'nvarchar(1024)'), 'Value')
, SettingValue = Settings.value('(./*:Value/text())[1]', 'nvarchar(max)')
FROM subscriptionXmL
CROSS APPLY subscriptionXmL.ExtensionSettingsXML.nodes('//*:ParameterValue') Queries(SETTINGS)
)
SELECT DISTINCT
SubscriptionName = subs.[Description]
, JobName = sch.ScheduleID
, ReportName = cat.Name, ReportPath = cat.Path
, sch.LastRunStatus, LastRun = sch.LastRunTime
, subs.LastStatus, LastSubRun = subs.LastRunTime
, subs.OwnerID, u.UserName, subs.SubscriptionID
, cat.ItemID [CatalogReportID]
,subs.ModifiedDate, cat.ModifiedDate
FROM SettingsCTE cte
JOIN ReportServer.dbo.Subscriptions subs
ON subs.SubscriptionID = cte.SubscriptionID
INNER JOIN dbo.ReportSchedule rsch
ON rsch.SubscriptionID = subs.SubscriptionID
INNER JOIN dbo.Schedule sch
ON rsch.ScheduleID = sch.ScheduleID
INNER JOIN dbo.[Catalog] cat
ON rsch.ReportID = cat.ItemID
AND subs.Report_OID = cat.ItemID
JOIN dbo.Users u
ON u.UserID = subs.OwnerID
WHERE 1=0
OR cte.SettingName IN ('TO','CC','BCC') AND cte.SettingValue LIKE '%'+@txtEmail+'%'
ORDER BY sch.LastRunTime DESC, subs.LastRunTime DESC
Diese Abfrage extrahiert Informationen über Abonnements, die E-Mails an Adressen senden, die einem bestimmten Muster entsprechen. Sie nutzt die XML-Datenverarbeitungsfähigkeiten von SQL Server, um die E-Mail-Adressen aus den Einstellungen der Abonnementzustellung zu parsen.
Der direkte Zugriff auf die ReportServer-Datenbank zur Abfrage von E-Mail-Empfängern in SSRS-Abonnements bietet eine leistungsfähige Methode, um detaillierte Informationen über die Verteilung von Berichten zu erhalten. Diese Technik eröffnet Administratoren und Entwicklern tiefere Einblicke in die Nutzung und Verwaltung von Berichtsabonnements, die durch die Standardfunktionalitäten von SSRS allein nicht zugänglich sind. Obwohl dieser Ansatz ein fortgeschrittenes Verständnis der SSRS-Architektur und SQL-Kenntnisse erfordert, ist er ein unverzichtbares Werkzeug für die effiziente Verwaltung und Überwachung von Reporting-Services in einem Unternehmensumfeld.
Be the first to comment