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 e-mail 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