Christoph Muthmann
Architektur und Administration
Architektur und Administration
So schön ja auch die Möglichkeit ist, einzelne Abonnements einzurichten, so schwierig ist es, den Überblick zu behalten, wenn z. B. Teile eines Reportservers umziehen sollen. Die Pflege einzelner Abonnements setzt gelegentlich auch voraus, dass man sich vorher mal einen Überblick über alle vorhandenen Abonnements zu einem Bericht, oder einem Berichtspfad verschafft.
...
Leider bietet der Berichts-Manager in diesem Bereich nur einen rudimentären Überblick. Als Informationen werden praktisch nur eine generierte Beschreibung, sowie der Zeitpunkt und Status der letzten Ausführung angeboten. Wer Details sehen möchte, muss jedes Abonnement einzeln öffnen. Die Information, welcher Job im SQL Server Agent mit welchem Abonnement verknüpft ist, lässt sich über den Berichts-Manager überhaupt nicht ermitteln.
Also müsssen wir da selber etwas Hand anlegen!
Bereits vor einiger Zeit habe ich zwei Skripte veröffentlicht, die zur Anzeige der Abonnements und der fehlerhaften Abonnements verwendet werden können.
Im heutigen Beitrag soll es um die Ergänzung der Informationen gehen, die die zeitliche Einplanung betreffen. Es soll also die Frage beantwortet werden: Wann soll das Abonnement immer laufen?
Die Reporting Services verwalten alle Informationen in frei zugänglichen Tabellen, die allerdings nicht dokumentiert sind. Man sollte sich auch im klaren darüber sein, dass sich in der nächsten Version diese Struktur oder die Inhalte ändern können, ohne dass dieses in der Dokumentation erwähnt wird.
Diese Tabelle beinhaltet alle Informationen, die wir zur Auswertung der Abonnements benötigen. Hierin sind sowohl die Daten für normale zeitgesteuerte Abonnements, als auch für ereignisgesteuerte Abonnements (Snapshots) abgelegt.
Einige Felder sind allerdings schlecht lesbar, da dort über eine Bit-Codierung die Informationen abgelegt werden. Hierzu hatte ich ja bereits gestern die Grundlagen beschrieben. Im folgenden werde ich dann bei den Feldern nur noch (Bitmaskierung) als Info angeben und verwende zur angenehmeren Darstellung die Funktionen aus dem gestrigen Beitrag.
Uns interessieren jetzt die folgenden Feldgruppen:
| ScheduleId | Jobname im SQL Server Agent |
| RecurrenceType | Art der Wiederholung
|
| StartDate | Zeitanteil = Uhrzeit der Ausführung |
| StartDate | Datumsanteil = Datum der nächsten Ausführung |
| EndDate | Datumsanteil = Endezeitpunkt des Abonnements |
| WeeksInterval | Wochenintervall |
| DaysOfWeek | Wochentage (Bitmaskierung) |
| Month | Monate (Bitmaskierung) |
| DaysOfMonth | Tage im Monat (Bitmaskierung) |
| Month | Monate (Bitmaskierung) |
| MonthlyWeek | Woche des Monats |
| DaysOfWeek | Wochentage (Bitmaskierung) |
| DaysInterval | Tagesintervall |
| MinutesInterval | Minutenintervall |
| siehe Job-Informationen | Keine zusätzlichen Felder |
Hierzu kann man sich einen Bericht erstellen, der für jeden abonnierten Bericht einen Abschnitt enthält. Die Angaben zum Scheduler kommen in meinem Beispiel über einen Unterbericht. Die Verknüpfung erfolgt über den Job-Namen.
Es gibt einige Punkte, auf die ich hier eingehen möchte:
Der Unterbericht verwendet verschiedene Tabellen, die in Abhängigkeit vom RecurrenceTyp ein- oder ausgeblendet werden. Jede einzelne Tabelle beinhaltet die Feldliste, die ich oben bereits angegeben habe.
| Print article | This entry was posted by Christoph Muthmann on 17.04.12 at 12:17:00 . Follow any responses to this post through RSS 2.0. |
17.04.12 @ 16:13:10
Du solltest vielleicht mal die "Reihe" zusammenfassen - so a la How to ...
:-)
tosc