SQL dotazy
Obecné rady
- Při vytváření SQL dotazů doporučujeme používat
pohledy vytvořené pro snadnější přístup k datům v Asset
Managementu. Všechny pohledy určené pro přístup k informacím z AM
jsou v databázovém schématu "Query".
- SQL dotazy umožňují spouštět pouze SELECT dotazy.
- Názvy vlastních sloupců zadávejte vždy ve tvaru
Pohled.[Sloupec], například Node.[Sériové číslo]. Sloupce
můžete přejmenovat pomocí příkazu AS, například SELECT
Pohled.[Sloupec] AS [Pohled Sloupec].
- Nepoužívejte v dotazech SELECT * FROM, ale vždy
vyjmenujte konkrétní sloupce, jinak může být zobrazení výsledku
zpomaleno.
- Pohledy, které obsahují vlastnosti objektů, obsahují vždy 100
nejpoužívanějších vlastností objektů. Aktualizaci těchto pohledů
(novou definici pro 100 nejpoužívanějších vlastností) lze provést v
ALVAO WebApp - Správa - Údržba databáze - Aktualizovat data pro reporty
- Před vytvořením vlastních dotazů nad pohledy doporučujeme
podívat se na níže popsané ukázky použití pohledů.
Ukázky SQL dotazů
Níže uvádíme některé základní SQL dotazy na
zjištění dat o objektech.
Zobrazení všech počítačů v aktivní evidenci s podrobnými informacemi
V následujícím dotazu se 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'
Zobrazení všech počítačů 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'
Zobrazení všech objektů počítačů a jejich historie přesunu
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.
Převod dotazovacího jazyka do SQL – Zobrazení všech objektů uživatelů,
jejich počítačů typu desktop a celkový počet monitorů u nich
Ukážeme si zde, jak lze přepsat dotaz v
dotazovacím jazyce 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
SQL dotazy pro Audit změn oprávnění uživatelů
Protokol 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 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()))
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.
|