Pravidelná upozornění

Pravidelná upozornění jsou vlastní upozornění, která jsou automaticky zasílána e-mailem. Obsah výstrah je volitelný, např. se může jednat o upozornění na blížící se konec platnosti softwarových licencí, blížící se konec záruční doby určitých zařízení apod.

Pravidelná upozornění mohou spravovat členové skupiny Administrators v nabídce WebApp - Administration - Regular Alerts( Webová aplikace - Správa - Pravidelná upozornění)

Základem každé definice výstrahy je jeden SQL skript, který vrací tabulku s parametry zprávy a odeslanými daty. Data jsou vždy součástí textu e-mailu a volitelně je lze připojit jako soubor CSV.

Skript SQL

SQL skript vytvořeného alertu se provádí pravidelně podle nastavené doby opakování.

Tabulka pro návrat skriptu musí obsahovat následující povinné sloupce:

Sloupec Popis
Z Odesílatel zprávy, například Alvao DontReply <do-not-reply@domain.com>.
Hodnota NULL znamená, že oznámení je odesláno od nastaveného odesílatele zprávy systému Alvao.
Uživatelský účet, který se používá k odesílání zpráv prostřednictvím serveru SMTP, musí mít oprávnění k odesílání zpráv jménem tohoto odesílatele.
Tento Seznam příjemců zpráv oddělených středníky, například "user1@domain.com; user2@domain.com".
Cc Seznam příjemců kopie zprávy
Bcc Seznam příjemců skryté kopie zprávy
Předmět Předmět zprávy
Text Text zprávy. Text může používat html značky pro formátování textu.

Tabulka návratů je nejprve seskupena podle parametrů zprávy (povinné sloupce). Výsledný seznam představuje jednotlivé odeslané e-maily. Text každého e-mailu pak obsahuje datovou tabulku obsahující hodnoty z ostatních sloupců tabulky ze všech řádků s danými hodnotami povinných položek.

Poznámka:
Pokud e-mail obsahuje v některém poli (příjemce, kopie, skrytá kopie) více než 50 příjemců, odesílá se v dávkách po maximálně 50 příjemcích v každém poli
Poznámka:
Upozornění se odešle pouze tehdy, když skript SQL vrátí nějaké řádky. Pokud je seznam entit prázdný a uživatel přesto chce být upozorněn, musí být skript napsán tak, aby vždy vrátil nějaké řádky
Tip:
Upozornění lze volitelně vyhodnocovat nad analytickou databází místo nad produkční databází. To se doporučuje zejména u výstrah, u kterých trvá provedení skriptu SQL dlouho (desítky sekund a více)
Upozornění:
Každý periodický alert se spouští v transakci s úrovní izolace ReadUncommited. V extrémních případech proto může skript pracovat s daty, která uživatel právě upravuje

Příklady

Licence s blížícím se datem vypršení platnosti

Níže uvedený dotaz generuje upozornění na softwarové licence, jejichž platnost vyprší během následujících 30 dnů.

Odesílatelem upozornění je odesílatel zprávy. systému Alvao. Příjemci upozornění jsou všichni uživatelé, kteří mají oprávnění číst licence organizace

Tabulka licencí bude obsahovat název licence , inventární číslo, dobu platnosti od, číslo a dobu platnosti do.

declare @advanceDays int = 30
declare @sender nvarchar(255) = dbo.GetProperty('Alvao.StandardSenderAddress')

select 
    @sender as [From],
    stuff(
    (
            select cast(';' as varchar(max)) + P.sPersonEmail 
            from tPerson P
            join vLicRight_Read RR on RR.PersonId = P.iPersonId 
	    WHERE P.dPersonRemoved is null and P.bPersonAccountDisabled = 0 and ISNULL(P.sPersonEmail, '') != ''
            for xml path('')
	    ), 1, 1, '') as [To],
    null as [Cc],
    null as [Bcc],
    N'License about to expire' as [Subject],
    N'Hello,<br/><br/>the licenses listed below will expire within the next 30 days.' as [Text],
    LH.txtLicName as [License Name],
    LH.txtInventoryNum as [License inventory number],
    LH.dteDate as [Validity from],
    LH.dteDateExpire as [Validity to]
from tblLicHist LH
where LH.RemovedDate is null 
	and (LH.dteDateExpire is not null and LH.dteDateExpire between GETUTCDATE() and DATEADD(day, @advanceDays, GETUTCDATE()))

Počítače s blížícím se koncem záruky

Níže uvedený dotaz generuje upozornění na počítače, jejichž záruka vyprší během následujících 30 dnů.

Odesílatelem upozornění je odesílatel zprávysystému Alvao. Příjemci upozornění jsou všichni uživatelé, kteří jsou členy skupiny Asset Administrators

Tabulka počítačů bude obsahovat jejich název, typ, cestu ve stromu a datum vypršení záruky.

declare @advanceDays int = 30
declare @kindName nvarchar(255) = N'Warranty expiration'
declare @sender nvarchar(255) = dbo.GetProperty('Alvao.StandardSenderAddress')
declare @toGroupName nvarchar(255) = N'Asset managers'

select 
    @sender as [From],
    stuff(
        (
        select cast(';' as varchar(max)) + P.sPersonEmail
        from tPerson P
            join tRolePerson RP on RP.liRolePersonPersonId = P.iPersonId
            join tRole R on R.sRole=@toGroupName and R.iRoleId = RP.liRolePersonRoleId
        WHERE P.dPersonRemoved is null and P.bPersonAccountDisabled = 0 and ISNULL(P.sPersonEmail, '') != '' 
        for xml path('')
        ), 1, 1, '') as [To],
    null as [Cc],
    null as [Bcc],
    N'Computers with impending end of warranty' as [Subject],
    N'Hello,<br/><br/>the computers listed below will expire their warranty within the next '+cast(@advanceDays as nvarchar)+' days.' as [Text],
    N.txtName as [Name],
    N.txtClass as [Computer kind],
    N.txtPath as [Path in tree],
    PK.txtValue as [Warranty expiration]
from vNodeClass N
    join vPropertyKind PK on PK.lintNodeId = N.intNodeId and PK.txtKind = @kindName
where N.bolHidden = 0 and N.bolScrapped = 0
    and PK.txtValue is not null
    and (CONVERT(datetime, PK.txtValue, 103) between GETUTCDATE() and DATEADD(day, @advanceDays, GETUTCDATE()))    
    and N.bComputer=1

Změny velikosti paměti RAM u aktivních počítačů v inventáři

Níže uvedený dotaz generuje upozornění na objekty, u nichž byla v předchozím kalendářním měsíci změněna vlastnost Velikost paměti RAM (GB ).

Odesílatelem upozornění je odesílatel zprávsystému Alvao. Příjemci upozornění jsou všichni uživatelé, kteří jsou členy skupiny Asset Administrators

Tabulka objektu bude obsahovat datum změny, název objektu, typ, cestu ve stromu, zprávu o změně a jméno uživatele, který změnu provedl.

Správci aktiv obdrží odpovídající zprávu i v případě, že v uplynulém měsíci nebyly provedeny žádné změny.

select 
    NULL as [From],
    stuff((
            select cast(';' as varchar(max)) + P.sPersonEmail 
            from tPerson P
            join tRolePerson RP on RP.iRolePersonId = P.iPersonId 
            join tRole R on R.RoleBehaviorId = 11 and R.iRoleId = RP.liRolePersonRoleId
            WHERE P.dPersonRemoved is null and P.bPersonAccountDisabled = 0 and ISNULL(P.sPersonEmail, '') != ''
            for xml path('')
	    ), 1, 1, '') as [To],
    null as [Cc],
    null as [Bcc],
    N'Computers with resized RAM' as [Subject],
    N'Hello,<br/><br/>The objects listed below have had their RAM size changed within the last month.<br/>Please check if this change was justified.' as [Text],
    L.dteLog as [Date],
    N.txtName as [Object Name],
    N.txtClass as [Type],
    N.txtPath as [Path in tree],
    L.txtLog as [Message],
    P.sPerson as [User]
into #Result
from tblLog L 
join vNodeClass N on L.lintNodeId = N.intNodeId
join tblKind K on K.intKindId = L.KindId
join tPerson P on P.iPersonId = L.liLogPersonId
where N.bolHidden = 0 and N.bolScrapped = 0 and N.bComputer = 1 
    and K.intKindCode = 147 and L.lintLogKindId = 4
    and (DATEPART(MONTH, L.dteLog) = (DATEPART(MONTH, DATEADD(MONTH, -1, GETUTCDATE()))))

if exists(select 1 from #Result) 
    select * from #Result
else
select 
    NULL as [From],
    stuff(
    (
        select cast(';' as varchar(max)) + P.sPersonEmail 
        from tPerson P
        join tRolePerson RP on RP.iRolePersonId = P.iPersonId 
        join tRole R on R.RoleBehaviorId = 11 and R.iRoleId = RP.liRolePersonRoleId
        WHERE P.dPersonRemoved is null and P.bPersonAccountDisabled = 0 and ISNULL(P.sPersonEmail, '') != ''
        for xml path('')
        ), 1, 1, '') as [To],
    null as [Cc],
    null as [Bcc],
    N'Computers with resized RAM' as [Subject],
    N'Hello,<br/><br/>no object has had its RAM size changed in the last month.' as [Text]

drop table #Result    

Řešení problémů

Pokud některá oznámení nejsou odesílána tak, jak by měla, zkontrolujte následující body:

  • V tabulce WebApp - Administration- Regular Alerts ( Webová aplikace - Správa - Pravidelná upozornění ) vyberte příslušné upozornění. Pokud při posledním vyhodnocení došlo k chybě, zobrazí se text chybového hlášení v náhledu vpravo.
  • V aplikaci SQL Server Management Studio spusťte skript SQL ručně a zkontrolujte, zda vrací nějaká data a zda vrací všechny požadované sloupce
  • Zkontrolujte nastavení zasílání zpráv.

 

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