Aracılığıyla paylaş


Configuration Manager raporları için SQL deyimi başvurusu

Configuration Manager raporları oluşturulurken birçok yararlı Microsoft SQL Server deyimi kullanılabilir ve bunlar bu bölümde kısaca açıklanmıştır. Bu tartışmayı takip etmek için temel düzeyde SQL sorgu deyimi bilgisine ve aşağıdaki gibi sorgular yazma yeteneğine sahip olmanız gerekir:

SELECT Name, Comment, CollectionID

FROM v_Collection

WHERE Name LIKE 'All Windows%'

ORDER BY Name

Temel sorguları yazma hakkında bilgi için SQL Server belgelerinize bakın.

Toplama işlevleri

Toplama işlevleri (SUM, AVG, COUNT, COUNT(*), MAX ve MIN gibi), sorgu sonuç kümelerinde özet değerler oluşturur. Toplama işlevi (BAĞ_DEĞ_SAY(*) hariç) tek bir sütundaki tüm seçili değerleri tek bir sonuç değeri oluşturmak için işler. Toplama işlevleri görünümdeki tüm satırlara, WHERE yan tümcesi tarafından belirtilen görünümün bir alt kümesine veya görünümdeki bir veya daha fazla satır grubuna uygulanabilir. Bir toplama işlevi uygulandığında, her satır kümesinden tek bir değer oluşturulur.

Önemli

NULL değerlerin toplama sonuçlarına dahil edilmediğini unutmayın. Örneğin, 100 kaydınız varsa ve bunların 8'i saydığınız özellik için NULL sütun değerine sahipse, sayı yalnızca 92 sonuç döndürür.

COUNT(*) toplama işlevini kullanma örneği, aşağıdaki sorguda ( önceden tanımlanmış her site için istemcileri say raporundan) ve örnek sonuç kümesinde görüntülenir.

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 Site Adı ReportingSiteCode Saymak
ABC ABC Sitesi 928
123 123 Site ABC 1010

Tarih ve Saat işlevleri

Birçok yerleşik rapor Tarih ve Saat işlevlerini kullanır. Kullanılan en yaygın işlevler GETDATE, DATEADD, DATEDIFF ve DATEPART'tır.

GETDATE ()

GETDATE işlevi, tarih saat değerleri için geçerli tarih ve saati SQL Server iç biçimde üretir. GETDATE NULL parametresini () alır.

Aşağıdaki örnek geçerli sistem tarih ve saatini döndürür:

SELECT GETDATE()
(sütun adı yok)
2005-05-29 10:10:03.001

DATEADD (datepart, number, date)

DATEADD işlevi, belirtilen tarihe aralık eklemeye bağlı olarak yeni bir tarih saat değeri döndürür.

Datepart , tarihin hangi bölümünde yeni bir değer (örneğin, yıl, ay, gün, saat, dakika vb.) döndürüldüğünü belirten parametredir; sayıdatepart'ı artırmak için kullanılan değerdir ve tarih başlangıç tarihidir.

Aşağıdaki örnek, 29 Mayıs 2005'ten iki gün sonra bir tarihle sonuçlanır:

SELECT DATEADD([day], 2, '2005-05-29 10:10:03.001')
(sütun adı yok)
2005-05-31 10:10:03.001

DATEDIFF (datepart , startdate , enddate)

TARİh FARKI işlevi, belirtilen iki tarih arasında kesişen tarih ve saat sınırlarının sayısını döndürür.

Datepart , tarihin yeni bir değer döndüreceği bölümü belirten parametredir (örneğin, yıl, ay, gün, saat, dakika vb.), başlangıç tarihi başlangıç tarihi, bitiş tarihi ise bitiş tarihidir.

Aşağıdaki örnek, birinci ve ikinci tarihler arasındaki dakika sayısını verir:

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

'2005-06-12 09:28:11.111')
(sütun adı yok)
20118

DATEPART (datepart , date)

DATEPART işlevi, belirtilen tarihin belirtilen tarih kısmını temsil eden bir tamsayı döndürür.

Datepart , tarihin hangi bölümünde döndürüleceği ve tarihin belirtilen tarih olduğunu belirten parametredir.

Aşağıdaki örnek, belirtilen tarihteki aya neden olur:

SELECT DATEPART (month, '2005-05-29 10:10:03.001')
(sütun adı yok)
5

Tarih ve Saat işlevlerini birleştirme

Configuration Manager raporlarda Tarih ve Saat işlevlerinin bir bileşiminin kullanılması normaldir.

Aşağıdaki örnekte geçerli tarih ve saat (2005-05-29 10:10:03.001) eksi 100 gün olur:

SELECT DATEADD([day], - 100, GETDATE())
(sütun adı yok)
2005-02-18 10:10:03.001

Tarih ve Saat işlevlerini kullanan örnek sorgu

Aşağıdaki sorgu, bir günlük süre için durum iletilerinin toplam sayısını verir. Bu sorguda COUNT, GETDATE ve DATEADD işlevlerinin yanı sıra BETWEEN mantıksal işleci ile GROUP BY ve ORDER BY yan tümceleri kullanılır.

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
Site Kodu messageid Saymak Bitiş Tarihi
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

KATILDI

Configuration Manager'da etkili raporlar oluşturmak için, beklenen verileri almak için farklı görünümleri birleştirmeyi anlamanız gerekir. Üç tür birleşim vardır: iç, dış ve çapraz. Ayrıca, üç tür dış birleşim vardır: sol, sağ ve dolu. Kendi kendine birleştirme yukarıdaki birleşimlerden herhangi birini kullanır, ancak kayıtları aynı görünümden birleştirir.

İç birleşimler

İç birleşimde, iki görünümdeki kayıtlar birleştirilir ve yalnızca birleştirilen alanların değerleri belirli ölçütleri karşılıyorsa sorgunun sonuçlarına eklenir. v_R_System ve v_GS_WORKSTATION_STATUS görünümlerine katılmak için ResourceID kullanarak iç birleşim kullanırsanız, sonuç tüm sistemlerin listesi ve son donanım tarama tarihi olur.

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
Makine Adı Son HW Taraması
İstemci1 2005-05-29 10:10:03.001
İstemci3 2005-06-12 09:28:11.110

Dış birleşimler

Dış birleşim, birleştirilmiş görünümlerden aralarında eşleşen bir satır olup olmadığına bakılmaksızın tüm satırları döndürür. ON yan tümcesi, verileri filtrelemek yerine tamamlar. Üç dış birleşim türü (sol, sağ ve tam) ana verilerin kaynağını gösterir. Dış birleşimler, bir görünümde NULL değerleriniz olduğunda özellikle yararlı olabilir.

Sol dış birleşimler

İki görünümü birleştirmek için sol dış birleşim kullandığınızda, sol görünümdeki tüm satırlar sonuçlara eklenir. Aşağıdaki sorguda , v_R_System ve v_GS_WORKSTATION_STATUS görünümleri sol dış birleşim kullanılarak birleştirilir. v_R_System görünümü, sorguda listelenen ilk görünümdür ve bunu sol görünüm haline getirir. Sonuç, tüm sistemlerin listesini ve bunların son donanım tarama tarihini içerir. İç birleşimden farklı olarak, donanım için taranmayan sistemler null değerle (sonuç kümesinde görüldüğü gibi) listelenmeye devam eder.

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
Makine Adı Son HW Taraması
İstemci1 2005-05-29 10:10:03.001
İstemci2 NULL
İstemci3 2005-06-12 09:28:11.110

Sağ dış birleşimler

Sağ dış birleşim, sağ görünümdeki tüm satırların sonuçlara dahil olması dışında kavramsal olarak sol dış birleşimle aynıdır.

Tam dış birleşim

Tam dış birleşim, her iki birleştirilmiş görünümdeki tüm satırları alır. Birleştirme koşulunun true olduğu tüm eşleştirilmiş satırları ve diğer görünümdeki NULL satırlarla birleştirilmiş her görünümdeki eşleşmeyen satırları döndürür. Genellikle bu tür dış birleşimleri kullanmak istemezsiniz.

Çapraz birleştirme

Çapraz birleştirme, toplamı değil iki görünümün çarpımını döndürür. Sol görünümdeki her satır, sağ görünümdeki her satırla eşleştirilir. Bu, herhangi bir filtreleme olmadan tüm olası satır birleşimlerinin kümesidir. Ancak WHERE yan tümcesi eklerseniz, çapraz birleşim iç birleşim olarak işlev görür ve tüm olası satır birleşimlerini istediğinize göre filtrelemek için koşulu kullanır.

Kendi kendine katılma

Kendi kendine birleştirme yukarıdaki birleştirme türlerinden herhangi birini kullanır, ancak kendisine katılmış bir görünümdür. Veritabanı diyagramlarında, kendi kendine birleştirmeye esnek ilişki adı verilir.

NOT IN anahtar sözcük tümceciği

IN OLMAYAN anahtar sözcük tümceciğine sahip alt sorgular, belirli ölçütlere uymayan bir veri kümesi hakkında bilgi bulmak için çok yararlıdır. Aşağıdaki örnekte sorgu, Notepad.exe yüklü olmayan tüm bilgisayarların NetBIOS adını döndürür. Öncelikle, seçili dosyanın yüklü olduğu tüm bilgisayarları aşağıdaki gibi algılayan bir sorgu oluşturmanız gerekir:

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'

İlk sorgunun Notepad.exe yüklü olan tüm bilgisayarları görüntülediğini onayladıktan sonra, aşağıdaki alt sorgu deyimi, Notepad.exe dosyası yüklü OLMAYAN tüm bilgisayar adlarını bulmak için NOT IN anahtar sözcüğünü kullanır:

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

Ayrıca bkz.

Configuration Manager raporları için rapor SQL deyimleri yazmak için sorgu tasarımcısını kullanma