Hur man skapar en samling för arbetsstationer

Det här kan verka som ett udda blogginlägg att skriva. Varför inte bara söka efter alla arbetsstationer med "Windows 7%" och "Windows 10%" i din fråga? När du har denna information kan du skapa en samling för arbetsstationer. Ja, det fungerar, men här är problemet: du får din SQL Server att göra mer arbete än den behöver göra. Plus, vad händer när du lägger till ett annat operativsystem (OS) som Windows 8 i mixen? Mer arbete!

I det här blogginlägget förklarar jag mer detaljerat varför det är dåligt att skapa samlingsfrågor med procentsymbolen "%" i dem. Istället visar jag dig en mycket enkel fråga som tar tag i alla arbetsstations OS utan att vara hård mot SQL Server eller din SCCM -webbserver. Efter det är allt du behöver göra att skapa samlingen för arbetsstationer.

Problemet med procentsymbolen "%"

Nu går jag in på SQL Server och hur index fungerar i en databas! De flesta av er vet vad "vita sidor" har rätt? Det är den 3-tums tjocka boken som bor nära din förälders hemtelefon. Tänk på de vita sidorna som en databas eftersom det är exakt vad det är, en databas.

För att bevisa min poäng liknar SQL Server -index de vita sidorna i en telefonkatalog, jag gjorde en snabb Bing -sökning efter SCCM WQL -arbetsstationer. Jag hittade den här länken till ConfigMgr WQL -frågor på Microsoft TechNet Gallery -webbplatsen. Den allra första frågan som anges är "Alla aktiva Windows -arbetsstationer (bärbara datorer/stationära datorer)."

Välj

SMS_R_SYSTEM.ResourceID,

SMS_R_SYSTEM.ResourceType,

SMS_R_SYSTEM.Name,

SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup,

SMS_R_SYSTEM.Client

från

SMS_R_System

inner join SMS_G_System_CH_ClientSummary på SMS_G_System_CH_ClientSummary.ResourceId = SMS_R_System.ResourceId inner join SMS_G_System_SYSTEM_ENCLOSURE på SMS_G_System_SYSTEM_ENCLOSURE.ResourceID = SMS_R_SourceDesource

var

SMS_G_System_SYSTEM_ENCLOSURE.ChassisTyp in (“3”, “4”, “5”, “6”, “7”, “15”, “16”, “8”, “9”, “10”, “11”, “ 14 ”)

och SMS_R_System.OperatingSystemNameandVersion gillar “Microsoft Windows NT Workstation%”

och SMS_G_System_CH_ClientSummary.ClientActiveStatus = 1

och SMS_R_System.Client = 1

och SMS_R_System.Obsolete = 0

och SMS_R_System.Active = 1

Denna fråga tittar på systemkapslingen och attributet Chassistyp. Jag kan skriva ett helt blogginlägg om varför denna fråga INTE hittar alla arbetsstationer, men det är för en annan dag. Anledningen till att jag visar dig denna fråga är att du ska titta på det markerade avsnittet.

Innan jag går tillbaka till min poäng om de vita sidorna, vad gör procentsymbolen "%" i den här frågan? Låt oss prata om SQL Server -index och tabellskanningar.

Vad är SQL Server Index?

Enligt Tutorials Point, ”Index är speciella uppslagstabeller som databassökmotorn kan använda för att påskynda datahämtning. Enkelt uttryckt är ett index en pekare till data i en tabell. Ett index i en databas liknar mycket ett index bak i en bok. ”

Vad är bordsskanningar?

Låt oss nu titta på bordsskanningar. MSSQLTips.com säger, ”En indexskanning eller tabellskanning är när SQL Server måste skanna data eller indexsidor för att hitta lämpliga poster. En genomsökning är motsatsen till en sökning, där en sökning använder indexet för att identifiera de poster som behövs för att tillfredsställa frågan. Anledningen till att du vill hitta och fixa dina skanningar är att de i allmänhet kräver mer I/O och också tar längre tid att bearbeta. ”

Vad gör procentsymbolen “%” i SCCM WQL -frågan?

I ett nötskal betyder det att du söker efter alla poster som börjar med "Microsoft Windows NT Workstation." Detta är inte lika effektivt som att begära alla poster som innehåller "Workstation", men mer om det senare.

När jag återkommer till mina vita sidors analogi vill jag hitta alla rader med “Jones%” och hitta den första Jones är ganska lätt. Varför? För det mesta ordnas SQL Server -index, liknande de vita sidorna i en telefonkatalog, efternamn först. Så är dock inte fallet i SCCM -databasen, och för den delen är kolumnen OperatingSystemNameandVersion inte indexerad i SQL Server. Det betyder att när du använder procentsymbolen % måste SCCM titta på varje rad i databasen för att se om värdet, Jones%, finns där. Med andra ord, detta kräver mycket I/O.

Hur kan vi göra denna fråga bättre för att skapa en samling för arbetsstationer?

Använd kolumnen SystemRole i vyn System (SMS_G_System_SYSTEM). Nedan visas en skärmdump av kolumnen Systemroll i Resursutforskaren. Ja, du ser det rätt. Kolumnnamnet är ett ord i databasen och WQL och två ord i Resource Explorer.

Samling för arbetsstationer - Systemkolumn

Välj

SMS_R_System.ResourceId,

SMS_R_System.ResourceType,

SMS_R_System.Name,

SMS_R_System.SMSUniqueIdentifier,

SMS_R_System.ResourceDomainORWorkgroup,

SMS_R_System.Client

från

SMS_R_System

inner join SMS_G_System_CH_ClientSummary på SMS_G_System_CH_ClientSummary.ResourceID = SMS_R_System.ResourceId

inner join SMS_G_System_SYSTEM på SMS_G_System_SYSTEM.ResourceId = SMS_R_System.ResourceId

var

SMS_G_System_SYSTEM.SystemRole = “Arbetsstation”

och SMS_G_System_CH_ClientSummary.ClientActiveStatus = 1

och SMS_R_System.Client = 1

och SMS_R_System.Obsolete = 0

och SMS_R_System.Active = 1

Lägg märke till att jag inte förändrade mycket. Jag tog bort ChassisType -filtret i var -klausulen eftersom det finns arbetsstationer med andra chassityper. Jag tog också bort OS -namnet. Istället letar den uppdaterade frågan efter systemrollen ”Workstation”. Dessa enkla ändringar gör frågan mer effektiv på din SQL Server och SCCM -webbserver.

Med resultaten kan du nu fortsätta och skapa en samling för arbetsstationer med vetskapen om att du inte lägger onödig stress på SQL Server.

Vill du att jag gör ett blogginlägg om varför en fråga som söker efter attributet Systemhölje ChasisType inte hittar alla arbetsstationer? Meddela mig genom att kontakta mig på @GarthMJ.

Se hur Right Click Tools förändrar hur system hanteras.

Öka produktiviteten direkt med vår begränsade, kostnadsfria Community Edition.

Kom igång med Right Click Tools idag:

Dela detta:

Support

  • Detta fält används för valideringsändamål och ska lämnas oförändrat.

Kontakt

  • Detta fält används för valideringsändamål och ska lämnas oförändrat.
sv_SESwedish