Skip Navigation Links
Skip Navigation Links.
Skip Navigation Links
Skip Navigation Links.
%USERPROFILE%\Documents\ALVAO\Doc\Documentation\doc\cs\alvao_8_1\troubleshooting\51737.aspx
|
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
- 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")
- 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.).
- V nastavení Collectoru je povolena funkce "Načítání
souborů" - tedy např. používáte autonomního Agenta
- 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.
- Proveďte zálohu aktuální databáze.
- 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í.
- 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.
- Jakmile zkontrolujete zobrazené hodnoty, nastavte
proměnnou @repair na hodnotu 1 a skript
znovu spusťte - měla by se provést oprava hodnot.
- 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))
insertinto
@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
insertinto
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ů"
- Spusťte program Admin a z hlavní nabídky použijte příkaz
Spravovat - Servery
- 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
- Přesuňte soubory ze složky, kterou máte nastavenu ve
funkci Načítání souborů, do jiné
složky, např. "Načíst".
- V AM Console použijte z hlavní nabídky příkaz
Nástroje - Detekce - Načíst ze souboru...
- Zobrazí se okno Soubory ruční detekce.
Vyberte složku Načíst, kterou jste
vytvořili v kroku 1.
- 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.
- Jakmile načtení souborů skončí, ručně odstraňte všechny
soubory ze složky Načíst.
- 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.
|