Comment créer une collection pour les postes de travail

Cela peut sembler un article de blog étrange à écrire. Pourquoi ne pas simplement rechercher tous les postes de travail avec « Windows 7% » et « Windows 10% » dans votre requête ? Une fois que vous avez ces informations, vous pouvez créer une collection pour les postes de travail. Oui, cela fonctionne, mais voici le problème : vous obligez votre serveur SQL à faire plus de travail qu'il n'en a besoin. De plus, que se passe-t-il lorsque vous ajoutez un autre système d'exploitation (OS) de poste de travail comme Windows 8 dans le mix ? Plus de travail!

Dans cet article de blog, j'explique plus en détail pourquoi il est mauvais de créer des requêtes de collection en utilisant le symbole de pourcentage "%". Au lieu de cela, je vous montre une requête très simple qui saisit tous les systèmes d'exploitation de poste de travail sans être difficile sur SQL Server ou votre serveur de site SCCM. Après cela, tout ce que vous avez à faire est de créer la collection pour les postes de travail.

Le problème avec le symbole de pourcentage « % »

Voilà, j'entre dans le vif du sujet de SQL Server et du fonctionnement des index dans une base de données ! La plupart d'entre vous savent ce que "pages blanches« sont, n'est-ce pas ? C'est ce livre de 3 pouces d'épaisseur qui vit près du téléphone de la maison de vos parents. Considérez les pages blanches comme une base de données car c'est exactement ce que c'est, une base de données.

Pour aider à prouver mon point, les index SQL Server sont similaires aux pages blanches d'un annuaire téléphonique, j'ai fait une recherche rapide sur Bing pour les postes de travail SCCM WQL. j'ai trouvé ce lien vers Requêtes WQL ConfigMgr sur le site de la galerie TechNet Microsoft. La toute première requête répertoriée est « Tous les postes de travail Windows actifs (ordinateurs portables/ordinateurs de bureau) ».

sélectionner

SMS_R_SYSTEM.ResourceID,

SMS_R_SYSTEM.ResourceType,

SMS_R_SYSTEM.Nom,

SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup,

SMS_R_SYSTEM.Client

de

SMS_R_Système

jointure interne SMS_G_System_CH_ClientSummary sur SMS_G_System_CH_ClientSummary.ResourceId = SMS_R_System.ResourceId jointure interne SMS_G_System_SYSTEM_ENCLOSURE sur SMS_G_System_SYSTEM_ENCLOSURE.ResourceID = SMS_R_System.ResourceId

SMS_G_System_SYSTEM_ENCLOSURE.ChassisEntre ("3", "4", "5", "6", "7", "15", "16", "8", "9", "10", "11", " 14")

et SMS_R_System.OperatingSystemNameandVersion comme « Microsoft Poste de travail Windows NT% »

et SMS_G_System_CH_ClientSummary.ClientActiveStatus = 1

et SMS_R_System.Client = 1

et SMS_R_System.Obsolete = 0

et SMS_R_System.Active = 1

Cette requête examine le boîtier du système et l'attribut Type de châssis. Je peux écrire un article de blog entier sur les raisons pour lesquelles cette requête ne trouvera PAS tous les postes de travail, mais c'est pour un autre jour. La raison pour laquelle je vous montre cette requête est que vous jetiez un œil à la section en surbrillance.

Avant de revenir à mon point sur les pages blanches, à quoi sert le symbole de pourcentage « % » dans cette requête ? Parlons des index SQL Server et des analyses de table.

Que sont les index SQL Server ?

Selon Point de tutoriels, « Les index sont des tables de recherche spéciales que le moteur de recherche de base de données peut utiliser pour accélérer la récupération des données. En termes simples, un index est un pointeur vers les données d'une table. Un index dans une base de données est très similaire à un index à la fin d'un livre.

Que sont les analyses de table ?

Maintenant, regardons les analyses de table. MSSQLTips.com dit : « Une analyse d'index ou une analyse de table se produit lorsque SQL Server doit analyser les pages de données ou d'index pour trouver les enregistrements appropriés. Une analyse est l'opposé d'une recherche, où une recherche utilise l'index pour identifier les enregistrements nécessaires pour satisfaire la requête. La raison pour laquelle vous voudriez trouver et corriger vos analyses est qu'elles nécessitent généralement plus d'E/S et prennent également plus de temps à traiter.

Que fait le symbole de pourcentage « % » dans la requête WQL SCCM ?

En un mot, cela signifie que vous recherchez tous les enregistrements commençant par "Microsoft Windows NT Workstation". Ce n'est pas aussi efficace que de demander tous les enregistrements qui contiennent « Station de travail », mais nous en reparlerons plus tard.

Pour en revenir à mon analogie avec les pages blanches, je veux trouver toutes les lignes avec "Jones%" et trouver le premier Jones est assez facile. Pourquoi? Pour la plupart, les index SQL Server, similaires aux pages blanches d'un annuaire téléphonique, sont classés par nom de famille en premier. Ce n'est cependant pas le cas dans la base de données SCCM, et d'ailleurs, la colonne OperatingSystemNameandVersion n'est pas indexée dans SQL Server. Cela signifie que lorsque vous utilisez le symbole de pourcentage %, SCCM doit examiner chaque ligne de la base de données afin de voir si la valeur, Jones%, est présente. En d'autres termes, cela nécessite beaucoup d'E/S.

Comment pouvons-nous améliorer cette requête pour créer une collection pour les postes de travail ?

Utilisez la colonne SystemRole dans la vue Système (SMS_G_System_SYSTEM). Vous trouverez ci-dessous une capture d'écran de la colonne Rôle système dans l'explorateur de ressources. Oui, vous le voyez correctement. Le nom de la colonne est composé d'un mot dans la base de données et WQL, et de deux mots dans l'explorateur de ressources.

Collection pour les postes de travail - Colonne Rôle système

sélectionner

SMS_R_System.ResourceId,

SMS_R_System.ResourceType,

SMS_R_System.Name,

SMS_R_System.SMSUniqueIdentifier,

SMS_R_System.ResourceDomainORWorkgroup,

SMS_R_System.Client

de

SMS_R_Système

jointure interne SMS_G_System_CH_ClientSummary sur SMS_G_System_CH_ClientSummary.ResourceID = SMS_R_System.ResourceId

jointure interne SMS_G_System_SYSTEM sur SMS_G_System_SYSTEM.ResourceId = SMS_R_System.ResourceId

SMS_G_System_SYSTEM.SystemRole = "Poste de travail"

et SMS_G_System_CH_ClientSummary.ClientActiveStatus = 1

et SMS_R_System.Client = 1

et SMS_R_System.Obsolete = 0

et SMS_R_System.Active = 1

Remarquez que je n'ai pas beaucoup changé. J'ai supprimé le filtre ChassisType dans la clause where car il existe des postes de travail avec d'autres types de châssis. J'ai également supprimé le nom du système d'exploitation. Au lieu de cela, la requête mise à jour recherche le rôle système « Station de travail ». Ces modifications simples rendent la requête plus efficace sur votre serveur de site SQL Server et SCCM.

Avec les résultats, vous pouvez maintenant aller de l'avant et créer une collection pour les postes de travail en sachant que vous n'exercez aucune pression excessive sur le serveur SQL.

Souhaitez-vous que je fasse un article de blog expliquant pourquoi une requête qui recherche l'attribut de boîtier système ChasisType ne trouvera pas tous les postes de travail ? Faites le moi savoir en me contactant au @GarthMJ.

Découvrez comment Right Click Tools change la façon dont les systèmes sont gérés.

Augmentez immédiatement votre productivité grâce à notre version Community Edition limitée et gratuite.

Commencez dès aujourd'hui avec Right Click Tools :

Assistance

  • Ce champ n’est utilisé qu’à des fins de validation et devrait rester inchangé.

Contact

  • Ce champ n’est utilisé qu’à des fins de validation et devrait rester inchangé.

En soumettant ce formulaire, vous comprenez que Recast Software peut traiter vos données comme décrit dans le Recast Software Politique de confidentialité.

fr_FRFrench