Skip Navigation Links Skip Navigation Links.
Skip Navigation Links Skip Navigation Links.


51737 - AM Collector - Načítání souborů (detekce autonomním agentem) - při každém načtení soboru detekce se inkrementují vlastnosti všech podřazených objektů sestavy, které jsou generovány z číselné řady

Článek se týká verzí produktů

ALVAO Asset Management 8.1 (8.1.702, 8.1.732)

Příznaky

  1. Je zapnuta číselná řada pro některou vlastnost - např. Inventární číslo, Evidenční číslo, apod. (neplatí pro číselné řady pro vlastnost "Název v síti")
  2. Podřazené objekty pod objektem typu "Sestava" (nebo "Počítač", pokud nepoužíváte sestavy) mají některé z těchto vlastností (viz bod 1.).
  3. V nastavení Collectoru je povolena funkce "Načítání souborů" - tedy např. používáte autonomního Agenta
  4. Načtení CXM souboru detekce k existujícímu počítači funkcí "Načítání souborů" způsobí změnu všech hodnot vlastností, které jsou generované číselnou řadou v podřazených objektech objektu "Sestava" nebo "Počítač". Tedy např. inventárnímu číslu se přiřadí nové číslo z řady a číslo v řadě je zvětšeno o 1.

Příčina

Příčinou je chyba v produktech ALVAO.

Řešení

Opraveno ve verzi 8.1.746.

Detekční a opravný skript

Následující skript zobrazí a případně opraví hodnoty vlastností, které byly několikrát "přegenerovány" číselnou řadou. Do hodnoty vlastnosti se vrátí původní hodnota, která ve vlastnosti byla před tím, než systém vlivem této chyby začal generovat nové hodnoty.

Postup pro opravu postižených hodnot vlastností

Na začátku skriptu je proměnná @repair, která určuje, zda skript má pouze zobrazit postižené hodnoty vlastností, nebo tyto hodnoty opravit. Výchozí hodnota je 0 (pouze zobrazit hodnoty).

Pozn.: před samotnou opravou se ujistěte, že jste nainstalovali nový Collector verze 8.1.746 a vyšší, ve kterém byla chyba už opravena.

  1. Proveďte zálohu aktuální databáze.
  2. Zkopírujte skript níže do SQL Server Management Studia a spusťte skript nad vaší DB ALVAO s parametrem @repair=0. Pokud byl systém ovlivněn touto chybou, zobrazí se řádky postižených vlastností.
  3. Pokud se zobrazí nějaké řádky, proveďte kontrolu, zda ve sloupci Nová (původní) hodnota je hodnota, která byla ve vlastnosti před začátkem působení této chyby. Můžete to ověřit např. na záložce Deník jednotlivých objektů - zde vidíte historické změny hodnot všech vlastností objektu.
    Pozn.: Pokud skript nezobrazí žádné řádky, Váš systém nebyl touto chybou pravděpodobně nijak postižen a tedy nepokračujte dále.
  4. Jakmile zkontrolujete zobrazené hodnoty, nastavte proměnnou @repair na hodnotu 1 a skript znovu spusťte - měla by se provést oprava hodnot.
  5. Zkontrolujte, např. v Deníku objektů, že byly do hodnot vráceny opravdu správné (původní) hodnoty.

Pozn.: Pokud si nejste jistí nebo máte nějaké pochybnosti, kontaktujte naši technickou podporu.

Upozornění: Následující skript funguje pouze na databázi v CZ jazyce. Pokud máte jiný jazyk databáze, kontaktujte technickou podporu.

Skript

------------------------------------------------------------------------------------------------
declare
@repair bit=0 --pokud je 0, pouze zobrazí výpis, pokud nastavíte 1, provede opravu dat
------------------------------------------------------------------------------------------------

declare @sysid int
select
@sysid=iPersonId from tPerson where bPersonSystem=1

declare @props table (kindid int, idseqid int, name nvarchar(255))
insert
into @props
select k.intKindId,id.intIdSeqId,k.txtName
from tblKind k
   
join tblIdSeq id on id.liKindId=k.intKindId and k.intKindCode!=3 and id.bUse=1

declare
@chng table (propid int primary key, newval nvarchar(255))
insert into @chng
select t.intPropertyId,t.CorrectVal
from (
   
select p.intPropertyId,p.txtValue ActualVal,
       
substring(t.txtLog,charindex('"',t.txtLog,12)+18,
           
charindex('"',t.txtLog,charindex('"',t.txtLog,12)+18)-(charindex('"',t.txtLog,12)+18)) CorrectVal
   
from (
       
select l.txtLog,l.lintNodeId,p.kindid, row_number() over (partition by l.lintNodeId order by l.dteLog asc) rn
       
from tblLog l
           
join @props p on l.txtLog like N'Vlastnost "'+p.name+N'" byla změněna z %'
           
left join tblHistory h on h.lintNodeId=l.lintNodeId and h.intFlags=1280
       
where l.liLogPersonId=@sysid and
           
l.dteLog>={d'2015-04-14'} and
           
l.lintLogKindId=4 and
           
l.dteLog>dateadd(minute,2,h.dteDateTime)
        )
t
       
join tblProperty p on p.lintNodeId=t.lintNodeId and p.lintKindId=t.kindid
   
where rn=1
   
) t
where isnull(t.ActualVal,'')!=isnull(t.CorrectVal,'')

if
( @repair=0 )
begin
    select
       
n.txtName [Objekt],n.txtPath [Cesta],n.txtClass [Druh objektu],k.txtName [Vlastnost],p.txtValue [Aktuální hodnota],ch.newval [Nová (původní) hodnota]
   
from @chng ch
       
join tblProperty p on p.intPropertyId=ch.propid
       
join tblKind k on k.intKindId=p.lintKindId
       
join vNodeClass n on n.intNodeId=p.lintNodeId
end
else
begin
    insert
into tblLog (lintNodeId,dteLog,liLogPersonId,lintLogKindId,txtLog)
   
select p.lintNodeId, getutcdate(), @sysid, 4,
        replace
(replace(replace((select txtText from tblDict where lintPropEditMsgId=1), '$1', k.txtName), '$2', isnull(p.txtValue,'')), '$3', isnull(ch.newval,''))
   
from tblProperty p
       
join @chng ch on ch.propid=p.intPropertyId
       
join tblKind k on k.intKindId=p.lintKindId
   
where isnull(p.txtValue,'')!=isnull(ch.newval,'')

   
update p
   
set p.txtValue=isnull(ch.newval,'')
   
from tblProperty p
   
    join @chng ch on ch.propid=p.intPropertyId
   
where isnull(txtValue,'')!=isnull(ch.newval,'')
end

Náhradní řešení pro verze 8.1.702 a 8.1.732

Náhradní řešení je nepoužívat funkci "Načítání souborů".

Pozn.: Pokud provádíte detekce pomocí Autonomního agenta a tedy využíváte funkci Načítání souborů, vypněte funkci (viz postup níže) a zaslané soubory od Agentů načítejte do evidence ručně v AM Console pomocí příkazu z hlavní nabídky Nástroje - Detekce - Načíst ze souboru... .

Vypnutí funkce "Načítání souborů"

  1. Spusťte program Admin a z hlavní nabídky použijte příkaz Spravovat - Servery
  2. Zobrazí se okno ALVAO Servery. Upravte všechny servery a vypněte funkci Načítání souborů.

Ruční načtení souborů zaslaných od Autonomních agentů ze složky

  1. Přesuňte soubory ze složky, kterou máte nastavenu ve funkci Načítání souborů, do jiné složky, např. "Načíst".
  2. V AM Console použijte z hlavní nabídky příkaz Nástroje - Detekce - Načíst ze souboru...
  3. Zobrazí se okno Soubory ruční detekce. Vyberte složku Načíst, kterou jste vytvořili v kroku 1.
  4. Zobrazí se všechny soubory v této složce. Označte všechny soubory (např. pomocí klávesové zkratky Ctrl+A) a stiskněte tlačítko Načíst do databáze.
  5. Jakmile načtení souborů skončí, ručně odstraňte všechny soubory ze složky Načíst.
  6. Kroky 1-5 opakujte po nějaké době, např. 1x za týden.

 

Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.