ACS: 42 dní a dost?

Pokud zvětšíme počet dní, po které jsou uchována data v databázi ACS na více než 42 (dní), zjistíme po čase nepříjemnou skutečnost. Starší data se v reportech nezobrazují. Kontrola přímo v databázi prozradí, že je vše v pořádku, je vytvořen požadovaný počet datových oddílů (partitions), ale pohledy používané v reportech (dvHeader, dvAll5, dvAll) nejstarší data nezobrazují.
V čem je problém?
V dynamické definici výše uvedených pohledů, jak se můžeme přesvědčit, když si v nástroji SQL Server Management Studio zobrazíme definici pohledu dvAll (Script View as | CREATE To | New Query Editor Window). Ve skriptu bude uvedeno spojení maximálně 42 dílčích pohledů dvAll_<uid> jednotlivých denních oddílů.

 

create view [AdtServer].[dvAll] as
   select * from dvAll_9c3313df_5146_4b30_ae0b_5c989adfb60d union all
   select * from dvAll_e8bfe379_2ef4_4ce8_a5c1_abc61f814798 union all
   select * from dvAll_46ea83f7_caa6_41c5_af65_2b505586e87f       -- a tak dále

Dá se to napravit?
Zatím jsem nikde neobjevil oficiální vyjádření Microsoftu, takže berte následující pokyny s rezervou.

Na serveru, který má roli ACS Collector jsou dva skripty v jazyce SQL: C:\WINDOWS\system32\Security\AdtServer\DbCreatePartition.sql a C:\WINDOWS\system32\Security\AdtServer\DbDeletePartition.sql.

V nich jsou definice s pevně určeným počtem datových oddílů databáze, číslem 42. Například pro pohled dvAll je v prvním skriptu uvedeno:

 

* Create or update dvAll, the view across all partition views
*
*************************************************************************/
 declare @iIsFirst int
 declare @vchStmt nvarchar(max)
 declare @vchPartitionId nchar(36)
 declare cPartition cursor for
   select top 42 PartitionId from dtPartition order by PartitionCloseTime desc

Ve zmíněných skriptech se číslo 42 nachází shodně ve všech třech definicích pohledů dvAll, dvAll5 i dvHeader.  Pokud požadujeme reporty z dat z většího časového úseku, musíme tuto konstantu na šesti místech zvětšit. Nezapomeňte oba původní skripty nejprve uložit v původním tvaru! Jakmile omylem změníte něco jiného, nebude správně fungovat noční údržba databáze. To jen pro jistotu, že existuje cesta zpět . . .

Zmínky o tomto „problému“ najdeme v diskuzních fórech:

http://systemcentersolutions.wordpress.com/2011/01/11/audit-collection-services-reports-only-show-the-last-42-days-worth-of-data/

Poznámka:
Na serveru SQL 2005 lze použít maximálně 255 partitions – důvodem je omezení počtu použitých výrazů „union all“ v definici pohledu v této verzi SQL serveru. SQL Server 2008 toto omezení nemá.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *