Ilość raportów często przekracza realne potrzeby organizacji i jej jednostek, niekiedy jest to spowodowane rotacja pracowników, gdzie każdy chciałby posiadać raport dostosowany pod swoje wymagania. Niekiedy jest to wynik polityki firmy i premii za wprowadzenie nowych „przydatnych” ulepszeń do procesów i co za tym idzie ktoś wpadnie na pomysł nowego raportu, który będzie zwracał dokładniejsze informacje, bądź będzie informował o wykryciu błędów.
Raportów przybywa, ale nie ubywa, gdyż zawsze znajdzie się ten co nowych rzeczy nie lubi i woli pracować na obecnym (tj. starym) rozwiązaniem, którego używa od X lat. Zawsze jest nie przekonany do nowości. Zawsze.
Przychodzi jednak moment w którym decydujemy się na wyczyszczenie naszej półki z raportami i pozbyciu się tych już zakurzonych. Pierwszym krokiem jaki powinniśmy podjąć jest ustalenie daty ostatniego wywołania, uprzedzając otrzymane wyniki mogę stwierdzić, że w większości przypadków odpowiedzią jest „60 dni temu”. Związane jest to z faktem, że nie każdy zmienia domyślne ustawienia i nader często zbieranie informacji o wywoływaniu danego raportu schodzi na dalszy plan, a nawet na długie lata jest pomijane. Dobrze jest ustawienie takiej wartości, która będzie dla nas odpowiednia, bądź jeżeli nie chcemy zbierać danych w takiej formie to możemy oczywiście samemu zaimplementować mechanizm historyzacji. Ustawienie zakresu dni przechowywania tych danych możemy podejrzeć pod parametrem „ExecutionLogDaysKept”:
/* miejsce przechowywania ustawień */
SELECT
[Name]
, [Value]
FROM
[dbo].[ConfigurationInfo]
WHERE
[Name] = 'ExecutionLogDaysKept'
Wykonując powyższy kod powinniśmy otrzymać poszukiwaną wartość:

Poprzez UPDATE możemy zmodyfikować ową wartość pod nasze oczekiwania. Na ten moment zostawmy naszą wartość i przejdźmy do przygotowania skryptu zwracającego informacje o najstarszym wywołaniu każdego z raportów. W tym celu wykorzystamy przede wszystkim tabele [Catalog] oraz [ExecutionLogStorage], dzięki temu będziemy mogli połączyć nazwy raportów wraz z ich najstarszym uruchomieniem.
SELECT DISTINCT
c.[Name]
, c.[Path]
, MAX(ls.TimeStart) OVER (PARTITION BY ls.ReportID ORDER BY c.[Name]) AS OldestStartTime
, MAX(ls.TimeEnd) OVER (PARTITION BY ls.ReportID ORDER BY c.[Name]) AS OldestEndTime
FROM
[dbo].[Catalog] c
LEFT JOIN
[dbo].[ExecutionLogStorage] ls ON c.ItemID = ls.ReportID
WHERE
c.[Type] IN (2, 4)
Wykonanie powyższego kodu zwróci nam listę raportów wraz z najstarsza datą rozpoczęcia i zakończenia wywoływania.

Posiadając tak przygotowaną listę możemy ustalić które raporty mogą zostać usunięte, dodatkowo nie wprowadzanie w klauzuli WHERE warunku ograniczającego do wskazanych typów obiektów możemy uzyskać listę obejmującą również Datasety czy Data Source.