Skip Navigation LinksALVAO 11.0ALVAO Asset ManagementVyhledávání, reportování a analýza datSQL dotaz a skript na databáziPříklady SQL dotazů Skip Navigation Links.


Příklady SQL dotazů

Všechny počítače v aktivní evidenci

Následující dotaz zjistí podrobnosti o všech počítačích.

SELECT [Název objektu], [Velikost paměti RAM (GB)], [Celková kapacita pevných disků (GB)], [Procesor], [Operační systém], [Grafická karta], [IP adresy], [MAC adresy]
FROM Query.ObjectCsy
WHERE [Objekt typu počítač] = 'Ano'

Všechny počítače v aktivní evidenci s nainstalovaným AcrobatReader

Zde spojíme hodnoty z více pohledů do jednoho pomocí operátoru LEFT JOIN.
SELECT ObjectCsy.[Název objektu], Software.Product FROM Query.ObjectCsy
LEFT JOIN Query.Software ON [Software].ComputerNodeId = ObjectCsy.[Id objektu]
WHERE Software.Product = 'Adobe Acrobat Reader'

Všechny počítače a jejich historie přesunů

Dotaz na objekty počítačů a některé vybrané položky jejich historie.
SELECT ObjectCsy.[Název objektu], ObjectLogCsy.[Datum záznamu (UTC)], ObjectLogCsy.[Nadpis], ObjectLogCsy.[Zpráva]
FROM Query.ObjectCsy
LEFT JOIN Query.ObjectLogCsy ON ObjectLogCsy.[Id objektu] = ObjectCsy.[Id objektu]
WHERE [Objekt typu počítač] = 'Ano' AND ObjectLogCsy.[Nadpis] = N'Přesun' AND ObjectLogCsy.[Druh záznamu] = 'Historie objektů'

Diskové jednotky a volné místo na nich

Dotaz na diskové jednotky počítačů a stav volného místa na nich.

SELECT o.[Název objektu], d.[Logický disk], d.[Kapacita (GB)], d.[Volné místo (GB)], d.[Volné místo (%)]
FROM Query.DiskDriveCsy d
LEFT JOIN [Query].[ObjectCsy] o ON d.[Id objektu]=o.[Id objektu]

Uživatelé s přesunutým majetkem bez předávacího protokolu

Dotaz zobrazí uživatele, kterým byl přesunut majetek s vyplněným inventárním číslem, ale následně nebyl vystaven předávací protokol.

SELECT
  usr.[Název objektu] [Uživatel],
  usr.[Cesta ve stromu],
  dbo.fnLocalTime(presuny.[Datum posledního přesunu (UTC)],'Central Europe Standard Time') [Datum posledního přesunu],
  dbo.fnLocalTime(pp.[Datum posledního PP (UTC)],'Central Europe Standard Time') [Datum posledního PP]
FROM (
    SELECT
      usr.[Id objektu] [ID uživatele],
      max(l.[Datum záznamu (UTC)]) [Datum posledního přesunu (UTC)]
    FROM Query.ObjectLogCsy l
      INNER JOIN Query.ObjectCsy o ON o.[Id objektu]=l.[Id objektu] AND ISNULL(o.[Inventární číslo],'')!=''
      INNER JOIN Query.NodeParent np ON np.ChildNodeId=l.[Id objektu]
      INNER JOIN Query.ObjectCsy usr ON usr.[Id objektu]=np.ParentNodeId AND usr.[Druh objektu]=N'Uživatel'
    WHERE l.Nadpis=N'Přesun'
    GROUP BY usr.[Id objektu]
  ) presuny
  INNER JOIN Query.ObjectCsy usr ON usr.[Id objektu]=presuny.[ID uživatele]
  LEFT JOIN (
    SELECT
      l.[Id objektu],
      ISNULL(max(l.[Datum záznamu (UTC)]),{d'1900-01-01'}) [Datum posledního PP (UTC)]
    FROM Query.ObjectLogCsy l
    WHERE l.[Druh záznamu]=N'Dokument' AND l.Nadpis=N'Předávací protokol'
    GROUP BY l.[Id objektu]
  ) pp ON pp.[Id objektu]=presuny.[ID uživatele]
WHERE presuny.[Datum posledního přesunu (UTC)]>DATEADD(DAY,1,pp.[Datum posledního PP (UTC)])

Pozn.: Předávací protokol má v deníku pouze datum (a čas je vždy 00:00:00), proto u něj musíme přidat jeden den.

Audit změn oprávnění uživatelů

Protokol změn v nastavení oprávnění ve stromu objektů za minulý měsíc.
SELECT * FROM Query.NodeRightLog
WHERE DatePart("m", [TimeStamp]) = DatePart("m", DateAdd("m", -1, GETUTCDATE()))
  AND DatePart("yy", [TimeStamp]) = DatePart("yy", DateAdd("m", -1, GETUTCDATE()))
Protokol změn v nastavení členství ve skupinách za minulý měsíc.
SELECT * FROM Query.RoleMembershipLog
WHERE DatePart("m", [TimeStamp]) = DatePart("m", DateAdd("m", -1, GETUTCDATE()))
  AND DatePart("yy", [TimeStamp]) = DatePart("yy", DateAdd("m", -1, GETUTCDATE()))
Protokol přihlašování uživatelů za minulý měsíc.
SELECT * FROM Query.UserLogonLog
WHERE DatePart("m", [TimeStamp]) = DatePart("m", DateAdd("m", -1, GETUTCDATE()))
  AND DatePart("yy", [TimeStamp]) = DatePart("yy", DateAdd("m", -1, GETUTCDATE()))

Počítače a jejich detekované TPM čipy

Dotaz zobrazí seznam počítačů a jejich detekované TPM čipy.

SELECT
	o.[Id objektu] NodeId,
	o.[Druh objektu],
	o.[Název objektu] [Počítač],
	o.[Cesta ve stromu],
	wo.IsActivated,
	wo.IsEnabled,
	wo.IsOwned,
	wo.Manufacturer,
	wo.ManufacturerVersion,
	wo.ManufacturerVersionFull20,
	wo.ManufacturerVersionInfo,
	wo.PhysicalPresenceVersionInfo,
	wo.SpecVersion
FROM Query.ObjectCsy o
	LEFT JOIN vComputerDetectLast cdl ON cdl.lintComputerNodeId=o.[Id objektu] AND cdl.lintDetectKindId=1
	LEFT JOIN tblWbemObject wo ON wo.lintDetectId=cdl.lintDetectId AND wo.__CLASS='Win32_Tpm'
WHERE o.[Objekt typu počítač]='Ano'

Převod dotazu do SQL

Zde si ukážeme, jak můžete dotaz napsaný v interním dotazovacím jazyce převést do SQL.
Původní dotaz:
SELECT AS "Uživatel"=[Uživatel] [Uživatel].@Node,[Počítač].[Druh počítače],[Počítač].@Node,[Monitor].@Node COUNT 
WHERE @Class='Uživatel' 
WITH 
   SELECT AS [Počítač]  WHERE @Class='Počítač'  AND ([Druh počítače] = "desktop"),
   SELECT AS [Monitor]  WHERE @Class='Monitor' 
ENDWITH
Tento dotaz nám zobrazí objekty uživatelů, jejich počítače typu desktop a monitory. Také nám zobrazí celkový počet monitorů pod všemi uživateli (bez ohledu na typ počítače). Při převod do SQL budeme postupovat tak, že si napřed najdeme všechny nesmazané objekty typu Uživatel a jejich podobjekty typu Počítač.

SELECT [User].[Název objektu] AS [User NodeName], Node.[Název objektu] AS [Computer Name] FROM [Query].[ObjectCsy] [User]
LEFT JOIN [Query].NodeParent ON [User].[Id objektu] = NodeParent.ParentNodeId
LEFT JOIN [Query].[ObjectCsy] [Node] ON NodeParent.ChildNodeId = Node.[Id objektu]
WHERE [User].[Druh objektu] = N'Uživatel' AND (Node.[Druh objektu] = N'Počítač/desktop' OR Node.[Druh objektu] = N'Monitor')
Poznámka:
Na rozdíl od původního dotazu v dotazovacím jazyce neobsahuje výsledný SQL dotaz celkový počet monitorů. Tuto hodnotu je potřeba zjistit v samostatném dotazu.

Převod standardních EPQ dotazů

Následující SQL dotazy zobrazují stejná data, jako standardní EPQ soubory.

Inventář podle místností

Objekty s vlastností inventárním číslem, seskupené dle vlastnosti Místnost a řazené dle názvu v síti a třídy.
SELECT
  [Název objektu] ,
  [Druh objektu],
  [Inventární číslo],
  [Místnost],
  [Uživatel],
  [Název v síti] 
FROM Query.ObjectCsy 
WHERE [Inventární číslo] IS NOT NULL

Pozn.: Výsledek dotazu si pak v tabulce seřaďte dle sloupce "Místnost".

Inventář podle uživatelů

Objekty s vlastností inventárním číslem, seskupené dle vlastnosti Uživatel.
SELECT
  [Název objektu] ,
  [Druh objektu],
  [Inventární číslo],
  [Místnost],
  [Uživatel],
  [Název v síti] 
FROM Query.ObjectCsy 
WHERE [Inventární číslo] IS NOT NULL

Pozn.: Výsledek dotazu si pak v tabulce seřaďte dle sloupce "Uživatel".

Nainstalovaný software podle software

Nainstalovaný software, seskupený dle počítačů.
SELECT c.[Název objektu] AS [Počítač], Product AS [Aplikace], 
Installed, LicenseInventoryNumber AS [Inventární číslo počítače], 
u.[Název objektu] AS [Uživatel], LicenseInvoiceNumber AS [Číslo dokumentu licence],
LicenceName AS [Název licence] FROM Query.Software
LEFT JOIN Query.ObjectCsy c ON c.[Id objektu] = Software.ComputerNodeId 
LEFT JOIN Query.ObjectCsy u ON u.[Id objektu] = Software.[User] 
WHERE Product like N'ALVAO%'

Operační systémy

Nainstalované OS, seskupené dle počítačů.
SELECT Computer.NodeName AS [Počítač], Product AS [OS], Installed AS [Datum instalace],
Computer.[Inventární číslo] AS [Inventární číslo], [Computer].UserNodeId AS [Uživatel], LicenseInvoiceNumber AS [Dokument],
LicenceName AS [Přidělená licence], LicenseActivationKey AS [OS - sériové číslo] 
FROM Query.Software 
LEFT JOIN Query.Computer ON Computer.NodeId = Software.ComputerNodeId WHERE Category = 1

Počítače

Počítače, jejich podobjekty a vlastnosti.
SELECT [Název objektu], [Název v síti], [Uživatel], [Datum nákupu], [Inventární číslo], [Sériové číslo],
[Záruka do], [Celková kapacita pevných disků (GB)] AS [HDD], [Procesor], [Operační systém] 
FROM Query.ObjectCsy
WHERE [Objekt typu počítač] = 'Ano'

Přehled zásahů podle data

Seznam událostí v deníku od zadaných parametrů. Seskupení dle objektů.
SELECT [Název objektu], [Druh objektu], [Datum záznamu (UTC)], [Nadpis], [Zpráva]
FROM [Query].[ObjectLogCsy]
LEFT JOIN [Query].[ObjectCsy] ON [ObjectCsy].[Id objektu] = [ObjectLogCsy].[Id objektu]

Přesuny objektů podle data

Seznam událostí přesunů v deníku. Seskupení dle data.
SELECT [Název objektu], [Druh objektu], [Datum záznamu (UTC)], [Nadpis], [Zpráva]
FROM [Query].[ObjectLogCsy]
LEFT JOIN [Query].[ObjectCsy] ON [ObjectCsy].[Id objektu] = [ObjectLogCsy].[Id objektu]
WHERE ObjectLogCsy.[Nadpis] = N'Přesun' AND ObjectLogCsy.[Druh záznamu] = 'Historie objektů'

Zařízení podle data nákupu

Seznam objektů dle data nákupu.
SELECT [Název objektu],
CONVERT(datetime,[Datum nákupu]) AS [Datum], [Místnost], [Uživatel] FROM 
Query.ObjectCsy

Zařízení podle záruky

Seznam objektů dle jejich záruky (vlastnost).
SELECT [Název objektu], CONVERT(datetime,[Datum nákupu]) AS [Datum],
[Místnost], [Uživatel],[Záruka do]
FROM Query.ObjectCsy

 

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