SQL-utasítás referenciája Configuration Manager jelentésekhez

A Configuration Manager-jelentések létrehozásakor számos hasznos Microsoft SQL Server-utasítás használható, amelyeket ebben a szakaszban röviden ismertetünk. A vitafórum követéséhez rendelkeznie kell az SQL-lekérdezésutasítások alapszintű ismeretével és a lekérdezések írásának képességével, például a következővel:

SELECT Name, Comment, CollectionID

FROM v_Collection

WHERE Name LIKE 'All Windows%'

ORDER BY Name

Az alapszintű lekérdezések írásáról a SQL Server dokumentációjában talál további információt.

Összesítő függvények

Az aggregátumfüggvények (például SZUM, AVG, DARAB, DARAB(*), MAX és MIN) összegző értékeket hoznak létre a lekérdezési eredményhalmazokban. Az aggregátumfüggvény (a DARAB(*) kivételével) egyetlen oszlopban dolgozza fel az összes kijelölt értéket egyetlen eredményérték előállításához. Az összesítő függvények a nézetben lévő összes sorra, a WHERE záradék által meghatározott nézet egy részhalmazára vagy a nézet egy vagy több sorcsoportjára alkalmazhatók. Aggregátumfüggvény alkalmazásakor minden sorkészletből egyetlen érték jön létre.

Fontos

Vegye figyelembe, hogy a NULL értékek nem szerepelnek az összesített eredmények között. Ha például 100 rekordja van, és közülük 8 null oszlopértéket tartalmaz a megszámlálható tulajdonsághoz, a darabszám csak 92 eredményt ad vissza.

A COUNT(*) aggregátumfüggvény használatára egy példa jelenik meg a következő lekérdezésben (az ügyfelek számlálása az egyes helyek előre definiált jelentéseiben) és a példaeredmény-készletben.

SELECT v_Site.SiteCode, v_Site.SiteName, v_Site.ReportingSiteCode,

Count(SMS_Installed_Sites0) AS 'Count'

FROM v_Site, v_RA_System_SMSInstalledSites InsSite

WHERE v_Site.SiteCode = InsSite.SMS_Installed_Sites0

GROUP BY SiteCode, SiteName, ReportingSiteCode

ORDER BY SiteCode
SiteCode Webhelynév ReportingSiteCode Számít
ABC ABC-webhely 928
123 123 Webhely ABC 1010

Dátum- és időfüggvények

Számos beépített jelentés használja a Dátum és idő függvényt. A leggyakrabban használt függvények a GETDATE, a DATEADD, a DATEDIFF és a DATEPART.

GETDATE ()

A GETDATE függvény SQL Server dátum/idő értékek belső formátumában állítja elő az aktuális dátumot és időt. A GETDATE a NULL paramétert () veszi fel.

Az alábbi példa az aktuális rendszerdátumot és -időt eredményezi:

SELECT GETDATE()
(nincs oszlopnév)
2005-05-29 10:10:03.001

DATEADD (datepart, number, date)

A DATEADD függvény egy új dátum/idő értéket ad vissza a megadott dátumhoz adott intervallum hozzáadása alapján.

A Datepart az a paraméter, amely megadja, hogy a dátum mely részén adjon vissza új értéket (például év, hónap, nap, óra, perc stb.), a szám a datepart növeléséhez használt érték, a dátum pedig a kezdő dátum.

Az alábbi példa egy 2005. május 29-i kétnapos dátumot eredményez:

SELECT DATEADD([day], 2, '2005-05-29 10:10:03.001')
(nincs oszlopnév)
2005-05-31 10:10:03.001

DATEDIFF (datepart , startdate , enddate)

A DATEDIFF függvény a két megadott dátum közötti dátum- és időhatárok számát adja vissza.

A Datepart paraméter azt határozza meg, hogy a dátum mely részén adjon vissza új értéket (például év, hónap, nap, óra, perc stb.), a kezdő dátum a kezdő dátum, az enddate pedig a befejezési dátum.

Az alábbi példa az első és a második dátum közötti percek számát eredményezi:

SELECT DATEDIFF (minute, '2005-05-29 10:10:03.001',

'2005-06-12 09:28:11.111')
(nincs oszlopnév)
20118

DATEPART (datepart , date)

A DATEPART függvény egy egész számot ad vissza, amely a megadott dátum megadott dátumrészét jelöli.

A Datepart az a paraméter, amely meghatározza, hogy a dátum mely részét adja vissza, a dátum pedig a megadott dátum.

Az alábbi példában a hónap a megadott dátumot adja meg:

SELECT DATEPART (month, '2005-05-29 10:10:03.001')
(nincs oszlopnév)
5

Dátum- és időfüggvények kombinálása

Általában a Dátum és az Idő függvény kombinációját használják Configuration Manager jelentésekben.

Az alábbi példában az aktuális dátum és idő (2005-05-29 10:10:03.001) mínusz 100 nap látható:

SELECT DATEADD([day], - 100, GETDATE())
(nincs oszlopnév)
2005-02-18 10:10:03.001

Példa lekérdezés dátum- és időfüggvényekkel

A következő lekérdezés az állapotüzenetek teljes számát eredményezi egy egynapos időszakra vonatkozóan. Ebben a lekérdezésben a COUNT, a GETDATE és a DATEADD függvényt, valamint a BETWEEN logikai operátort, valamint a GROUP BY és AZ ORDER BY záradékot használja.

SELECT SiteCode, MessageID, COUNT(MessageID) AS [count],

GETDATE() AS [End Date]

FROM vStatusMessages

WHERE ([Time] BETWEEN DATEADD([day], -1, GETDATE()) AND GETDATE())

AND (MessageID BETWEEN '0' AND '10000')

GROUP BY SiteCode, MessageID

ORDER BY SiteCode, MessageID
Webhelykód Üzenetazonosító Számít Záró dátum
ABC 500 190 2005-05-29 10:10:03.001
ABC 501 130 2005-05-29 10:10:03.001
ABC 502 190 2005-05-29 10:10:03.001
ABC 1105 85 2005-05-29 10:10:03.001
ABC 1106 5 2005-05-29 10:10:03.001

CSATLAKOZIK

Ahhoz, hogy hatékony jelentéseket hozhasson létre Configuration Manager, meg kell értenie, hogyan csatlakozhat különböző nézetekhez a várt adatok lekéréséhez. Az illesztéseknek három típusa van: belső, külső és kereszt. Emellett háromféle külső illesztés létezik: bal, jobb és teljes. Az önillesztés a fenti illesztések bármelyikét használja, de ugyanabból a nézetből illeszti össze a rekordokat.

Belső illesztések

Belső illesztés esetén a rendszer két nézet rekordjait kombinálja, és csak akkor adja hozzá a lekérdezés eredményeihez, ha az illesztett mezők értékei megfelelnek bizonyos feltételeknek. Ha belső illesztést használ a ResourceID használatával a v_R_System és a v_GS_WORKSTATION_STATUS nézetek összekapcsolásához, az eredmény az összes rendszer és az utolsó hardvervizsgálati dátum listája lesz.

SELECT v_R_System.Netbios_Name0 AS MachineName,

v_GS_WORKSTATION_STATUS.LastHWScan AS [Last HW Scan]

FROM v_R_System INNER JOIN v_GS_WORKSTATION_STATUS

ON v_R_System.ResourceID = v_GS_WORKSTATION_STATUS.ResourceID
Gép neve Legutóbbi HW-vizsgálat
1. ügyfél 2005-05-29 10:10:03.001
3. ügyfél 2005-06-12 09:28:11.110

Külső illesztések

A külső illesztés az illesztett nézetek összes sorát visszaadja, függetlenül attól, hogy van-e egyező sor közöttük. Az ON záradék a szűrés helyett kiegészíti az adatokat. A külső illesztések három típusa (bal, jobb és teljes) a fő adatok forrását jelzi. A külső illesztések különösen hasznosak lehetnek, ha NULL értékekkel rendelkezik egy nézetben.

Bal oldali külső illesztések

Ha bal oldali külső illesztést használ két nézet egyesítéséhez, a bal oldali nézet összes sora megjelenik az eredmények között. A következő lekérdezésben a v_R_System és a v_GS_WORKSTATION_STATUS nézetek a bal oldali külső illesztés használatával lesznek összekapcsolva. A v_R_System nézet a lekérdezés első nézete, amely bal oldali nézetként jelenik meg. Az eredmény tartalmazza az összes rendszer listáját és az utolsó hardvervizsgálat dátumát. A belső illesztéstől eltérően a hardveres vizsgálat alá nem vont rendszerek továbbra is NULL értékkel lesznek felsorolva (ahogy az eredményhalmazban látható).

SELECT v_R_System.Netbios_Name0 AS MachineName,

v_GS_WORKSTATION_STATUS.LastHWScan AS [Last HW Scan]

FROM v_R_System LEFT OUTER JOIN v_GS_WORKSTATION_STATUS

ON v_R_System.ResourceID = v_GS_WORKSTATION_STATUS.ResourceID
Gép neve Legutóbbi HW-vizsgálat
1. ügyfél 2005-05-29 10:10:03.001
2. ügyfél NULL
3. ügyfél 2005-06-12 09:28:11.110

Jobb oldali külső illesztések

A jobb oldali külső illesztés elméletileg megegyezik a bal oldali külső illesztésekkel, azzal a különbségvel, hogy a jobb oldali nézet összes sora megjelenik az eredmények között.

Teljes külső illesztés

A teljes külső illesztés mindkét illesztett nézet összes sorát lekéri. Visszaadja az összes olyan párosított sort, ahol az illesztés feltétele igaz, valamint az egyes nézetek ki nem egyenlített sorait a másik nézet null soraival összefűzve. Általában nem érdemes ilyen típusú külső illesztést használni.

Keresztillesztés

A keresztillesztés két nézet szorzatát adja vissza, nem az összeget. A bal oldali nézetben minden sor egyezik a jobb oldali nézetben lévő sorokkal. Ez az összes lehetséges sorkombináció halmaza, szűrés nélkül. Ha azonban where záradékot ad hozzá, a keresztillesztés belső illesztésként működik, a feltétel alapján szűri az összes lehetséges sorkombinációt a kívántakra.

Önillesztés

Az önillesztés a fenti illesztéstípusok bármelyikét használja, de olyan nézet, amely önmagához van csatlakoztatva. Az adatbázis-diagramokban az önillesztést reflexív kapcsolatnak nevezzük.

NOT IN kulcsszókifejezés

A NOT IN kulcsszóval ellátott segéd lekérdezések nagyon hasznosak olyan adatkészlettel kapcsolatos információk kereséséhez, amelyek nem felelnek meg bizonyos feltételeknek. A következő példában a lekérdezés az összes olyan számítógép NetBIOS-nevét adja vissza, amely nincs telepítve Notepad.exe. Először létre kell hoznia egy lekérdezést, amely képes észlelni az összes olyan számítógépet, amely a kijelölt fájlt telepítette az alábbiak szerint:

SELECT DISTINCT v_R_System.Netbios_Name0

FROM v_R_System INNER JOIN v_GS_SoftwareFile

ON (v_GS_SoftwareFile.ResourceID = v_R_System.ResourceId)

WHERE v_GS_SoftwareFile.FileName = 'Notepad.exe'

Miután meggyőződik arról, hogy az első lekérdezés megjeleníti az összes olyan számítógépet, amelyen telepítve Notepad.exe, a következő al lekérdezési utasítás a NOT IN kulcsszókifejezést fogja használni az összes olyan számítógépnév megkereséséhez, amelyen nincs telepítve a Notepad.exe fájl:

SELECT DISTINCT Netbios_Name0

FROM v_R_System

WHERE Netbios_Name0 NOT IN

(SELECT DISTINCT v_R_System.Netbios_Name0

FROM v_R_System INNER JOIN v_GS_SoftwareFile

ON (v_GS_SoftwareFile.ResourceID = v_R_System.ResourceId)

WHERE v_GS_SoftwareFile.FileName = 'Notepad.exe')

ORDER by Netbios_Name0

Lásd még

Jelentés SQL-utasításainak írása Configuration Manager jelentésekhez lekérdezéstervezővel