Lista nieużywanych raportów

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.

Posts created 14

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top