Partager via


Get-SqlAssessmentItem

Obtient les vérifications des meilleures pratiques SQL Assessment disponibles pour un objet SQL Server choisi.

Syntaxe

Default (Par défaut)

Get-SqlAssessmentItem
    [-Check <String[]>]
    [[-InputObject] <PSObject>]
    [-Configuration <PSObject>]
    [-MinSeverity <SeverityLevel>]
    [-FlattenOutput]
    [<CommonParameters>]

Description

L’applet de commande Get-SqlAssessmentItem recherche toutes les meilleures pratiques disponibles pour chaque objet d’entrée. Pour plus d’informations, consultez la vue d’ensemble de l’API SQL Assessment.

Cette applet de commande accepte les types d’entrée suivants :

  • Microsoft.SqlServer.Management.Smo.Server
  • Microsoft.SqlServer.Management.Smo.Database
  • Microsoft.SqlServer.Management.Smo.AvailabilityGroup
  • Microsoft.SqlServer.Management.Smo.FileGroup
  • Microsoft.SqlServer.Management.Smo.RegisteredServers.RegisteredServer
  • Chaîne contenant le chemin d’accès à n’importe quel objet des types ci-dessus
  • Collection d’objets

Vous pouvez obtenir des objets d’entrée avec des applets de commande SqlServer telles que Get-SqlInstance et Get-SqlDatabase ou des applets de commande PowerShell de base telles que Get-Item et Get-ChildItem. En outre, l’applet de commande prend en charge le fournisseur SQL Server PowerShell, afin qu’elle puisse obtenir un objet à partir de son chemin d’accès. Le chemin d’accès peut être transmis explicitement, sinon le chemin actuel sera utilisé.

La disponibilité d’une vérification d’un objet choisi varie selon la version, la plateforme et le type d’objet SQL Server. En outre, il existe des vérifications qui ciblent des bases de données spécifiques comme tempdb ou master. Vous pouvez également filtrer les vérifications par balises, noms et gravité avec les paramètres -MinSeverity et -Check.

Avec l’applet de commande Get-SqlAssessmentItem , vous pouvez obtenir la liste des vérifications applicables à l’objet SQL Server donné. Vous pouvez également utiliser la sortie de cette applet de commande en tant qu’argument -Check pour l’applet de commande Invoke-SqlAssessment .

Les configurations personnalisées peuvent être appliquées avec le paramètre -Configuration. Des exemples de personnalisation sont disponibles sur Github.

Prise en charge de SQL Server sur une machine virtuelle Azure

Avec les applets de commande SQL Assessment, vous pouvez évaluer une instance de SQL Server sur une machine virtuelle Azure non seulement comme SQL Server local, mais également avec des règles spécifiques à SQL Server sur une machine virtuelle Azure (celles qui utilisent des informations sur la configuration de la machine virtuelle). Par exemple, la règle AzSqlVmSize vérifie que la machine virtuelle qui héberge une instance de SQL Server sur une machine virtuelle Azure est de taille recommandée.

Pour utiliser ces règles, connectez-vous à Azure avec le module Azure PowerShell et assurez-vous que le module Az.ResourceGraph est installé.

Connectez-vous avec Azure PowerShell avant d’appeler SQL Assessment sur une instance de machine virtuelle SQL Server sur Azure. L’exemple 13 montre la sélection interactive du processus de connexion et de l’abonnement.

NOTE. Il est possible d’utiliser la connexion de compte Azure persistante entre les sessions PowerShell, c’est-à-dire appeler Connect-AzAccount dans une session et omettre cette commande ultérieurement. Toutefois, la version actuelle des applets de commande SQL Assessment nécessite que le module Az.ResourceGraph soit importé explicitement dans ce cas : Import-Module Az.ResourceGraph

Exemples

Exemple 1 : Obtenir les vérifications de l’instance par défaut locale

PS:> Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem

   Target: [LOCAL]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

Cet exemple obtient toutes les vérifications disponibles pour l’instance par défaut de SQL Server exécutée sur l’ordinateur actuel.

Exemple 2 : Obtenir des vérifications avec l’applet de commande Get-Item

PS:> Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItem

   Target: [LOCAL]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

Cet exemple obtient toutes les vérifications disponibles pour l’instance par défaut de SQL Server exécutée sur l’ordinateur actuel.

Exemple 3 : Obtenir des vérifications avec le chemin d’accès à l’objet cible

PS:> Get-SqlAssessmentItem SQLSERVER:\SQL\localhost\default

   Target: [LOCAL]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

Cet exemple obtient toutes les vérifications disponibles pour l’instance par défaut de SQL Server exécutée sur l’ordinateur actuel.

Exemple 4 : Obtenir des vérifications avec une configuration personnalisée appliquée

PS:> Get-SqlDatabase master -ServerInstance . |
     Get-SqlAssessmentItem -Configuration C:\rulesetA.json, D:\rulesetB.json

   Target: [LOCAL]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
TF1204                         False   TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202
TempDBFilesAutoGrowth          False   Some TempDB data files have different... Microsoft Ruleset 0.1.202
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
SomeCustomCheck                True    Some custom check                        Ruleset A 1.0
AnotherCustomCheck             True    Another custom check                     Ruleset B 1.0
...

Cet exemple obtient toutes les vérifications disponibles avec une configuration personnalisée appliquée obtenue à partir de fichiers JSON spécifiés. Visitez le dossier d’exemples SQL Assessment sur Github pour savoir comment effectuer la personnalisation.

Exemple 5 : Obtenir des vérifications pour toutes les instances sur localhost

PS:> Get-SqlInstance -ServerInstance localhost | Get-SqlAssessmentItem

   Target: [LOCAL]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202

   Target: [LOCAL\INSTANCE1]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

Cet exemple montre l’applet de commande Get-SqlAssessmentItem acceptant un ensemble d’instances SQL Server via le pipeline.

Exemple 6 : Obtenir des vérifications pour toutes les instances avec des noms se terminant par des nombres

PS:> Get-SqlInstance -ServerInstance localhost | Where { $_.Name -Match '.*\d+' } | Get-SqlAssessmentItem

   Target: [LOCAL\INSTANCE1]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

Cet exemple montre l’applet de commande Get-SqlAssessmentItem acceptant un ensemble d’instances SQL Server via le pipeline. Seules les instances ayant le nom se terminant par des chiffres sont traitées.

Exemple 7 : Obtenir les vérifications d’une base de données par chemin d’accès

PS:> Get-SqlAssessmentItem SQLSERVER:\SQL\localhost\default\Databases\master


   TargetObject: [master]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
AutoCreateStats                True    Auto-Create Statistics should be on      Microsoft Ruleset 0.1.202
HintsUsageInModules            False   Hints usage in modules                   Microsoft Ruleset 0.1.202
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202
DuplicateIndexes               True    Duplicate Indexes                        Microsoft Ruleset 0.1.202
RedundantIndexes               True    Redundant Indexes                        Microsoft Ruleset 0.1.202
...

Cet exemple montre l’applet de commande Get-SqlAssessmentItem acceptant un chemin d’accès à une base de données SQL Server.

Exemple 8 : Obtenir des vérifications de gravité élevée pour une base de données

PS:> cd SQLSERVER:\SQL\localhost\default\Databases\master
PS:> Get-SqlAssessmentItem -MinSeverity High

Cet exemple montre Get-SqlAssessmentItem qui retourne des vérifications disponibles avec une gravité élevée pour la base de données master. Il accepte l’emplacement actuel du fournisseur PowerShell comme cible.

Exemple 9 : Obtenir des vérifications de gravité élevée pour une base de données

PS:> $db = Get-SqlDatabase master -ServerInstance localhost
PS:> Get-SqlAssessmentItem $db -MinSeverity High

Cet exemple montre Get-SqlAssessmentItem qui retourne des vérifications disponibles avec une gravité élevée pour la base de données master.

Exemple 10 : Obtenir des vérifications par balise

PS:> Get-SqlDatabase -ServerInstance . | Get-SqlAssessmentItem -Check Backup


   TargetObject: [master]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202


   TargetObject: [msdb]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202

Cet exemple montre l’applet de commande Get-SqlAssessmentItem qui retourne toutes les vérifications liées à la sauvegarde pour toutes les bases de données sur l’instance SQL Server locale par défaut.

Exemple 11 : Exécuter des vérifications sélectionnées de manière interactive

PS:> $serverInstance = Get-SqlInstance -ServerInstance '(local)'
PS:> $checks = Get-SqlAssessmentItem $serverInstance | Select Id, Description | Out-GridView -PassThru
PS:> Invoke-SqlAssessment $serverInstance -Check $checks

    TargetPath : Server[@Name='LOCAL']

Sev. Message                                                            Check ID               Origin
---- -------                                                            --------               ------
Info Enable trace flag 834 to use large-page allocations to improve     TF834                  Microsoft Ruleset 0.1.202
     analytical and data warehousing workloads.
Low  Detected deprecated or discontinued feature uses: String literals  DeprecatedFeatures     Microsoft Ruleset 0.1.202
     as column aliases, syscolumns, sysusers, SET FMTONLY ON, XP_API,
     Table hint without WITH, More than two-part column name. We
     recommend to replace them with features actual for SQL Server
     version 14.0.1000.

La deuxième ligne de cet exemple montre l’obtention de vérifications d’un $serverInstance et la sélection de certaines d’entre elles de manière interactive. Les éléments sélectionnés sont stockés dans une variable de tableau, qui peut ensuite être utilisée comme entrée pour l’applet de commande Invoke-SqlAssessment . Dans ce cas, seules les vérifications sélectionnées s’exécutent pendant le processus d’évaluation.

Exemple 12 : Spécifier des informations d’identification explicitement

PS> $cred = Get-Credential

PowerShell credential request
Enter your credentials.
User: Administrator
Password for user Administrator: ********

PS> $db = Get-SqlDatabase master -ServerInstance 10.0.3.118 -Credential $cred
PS> Get-SqlAssessmentItem $db

   TargetObject: [master]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
AutoCreateStats                True    Auto-Create Statistics should be on      Microsoft Ruleset 0.1.202
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202
DuplicateIndexes               True    Duplicate Indexes                        Microsoft Ruleset 0.1.202
RedundantIndexes               True    Redundant Indexes                        Microsoft Ruleset 0.1.202
...

Cet exemple montre comment obtenir la liste de vérifications SQL Assessment avec des informations d’identification spécifiées explicitement.

Exemple 13 : Obtenir la liste des règles d’évaluation SQL pour l’instance de machine virtuelle SQL Server sur Azure

PS> Connect-AzAccount
PS> Set-Subscription My-Pay-As-You-Go
PS> $cred = Get-Credential

PowerShell credential request
Enter your credentials.
User: Administrator
Password for user Administrator: ********

PS> $inst = Get-SqlInstance -ServerInstance 10.0.3.118 -Credential $cred
PS> Get-SqlAssessmentItem $inst

   TargetObject: [ContosoAzureSql]

ID                             ON      Name                                     Origin
--                             --      ----                                     ------
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202
AzSqlVmSize                    True    VM size is not memory-optimized          Microsoft Ruleset 0.1.202
...

Cet exemple montre comment obtenir une liste de règles applicables à une instance de machine virtuelle SQL Server spécifique sur Azure.

Une connexion d’abonnement Azure active active active les vérifications liées à Azure (AzSqlVmSize dans cet exemple). La première ligne se connecte à un compte Azure pour obtenir des données à partir d’Azure Resource Graph. La deuxième ligne est facultative.

Pour exécuter ces vérifications, SQL Assessment nécessite le module Az.ResourceGraph.

Paramètres

-Check

Une ou plusieurs vérifications, ID de vérification ou balises.

Pour chaque objet de vérification, Get-SqlAssessmentItem retourne cette vérification si elle prend en charge l’objet d’entrée.

Pour chaque ID de vérification, Get-SqlAssessmentItem retourne la vérification correspondante si elle prend en charge l’objet d’entrée.

Pour les balises, Get-SqlAssessmentItem retourne des vérifications avec l’une de ces balises.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Configuration

Spécifie les chemins d’accès aux fichiers contenant une configuration personnalisée. Les fichiers de personnalisation sont appliqués à la configuration par défaut dans l’ordre spécifié. L’étendue est limitée à cet appel d’applet de commande uniquement.

Propriétés du paramètre

Type:PSObject
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-FlattenOutput

Indique que cette applet de commande produit des objets simples de type Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat au lieu de Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-InputObject

Spécifie un objet SQL Server ou un chemin d’accès à un tel objet. L’applet de commande retourne les vérifications appropriées pour cet objet. Lorsque ce paramètre est omis, l’emplacement actuel est utilisé comme objet d’entrée. Si l’emplacement actuel n’est pas un objet SQL Server pris en charge, l’applet de commande signale une erreur.

Propriétés du paramètre

Type:PSObject
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:Cible

Jeux de paramètres

(All)
Position:10
Obligatoire:False
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-MinSeverity

Spécifie le niveau de gravité minimal pour que les vérifications soient trouvées. Par exemple, les vérifications des niveaux Moyen, Faible ou Information ne sont pas retournées lorsque -MinSeverity Élevé.

Propriétés du paramètre

Type:SeverityLevel
Valeur par défaut:Information
Valeurs acceptées:Information, Low, Medium, High
Prend en charge les caractères génériques:False
DontShow:False
Alias:Sévérité

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

System.String

Microsoft.SqlServer.Management.Smo.SqlSmoObject

Sorties

Microsoft.SqlServer.Management.Assessment.ICheck