Partager via


Get-SqlAssessmentItem

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

Syntaxe

Get-SqlAssessmentItem
   [-Check <String[]>]
   [[-InputObject] <PSObject>]
   [-Configuration <PSObject>]
   [-MinSeverity <SeverityLevel>]
   [-FlattenOutput]
   [-ProgressAction <ActionPreference>]
   [<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 PowerShell de base
applets de commande 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 telles que tempdb ou master. Vous pouvez également filtrer les vérifications par balises, noms et gravité avec les paramètres -MinSeverity et -Check.

Avec 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 comme argument -Check pour applet de commande Invoke-SqlAssessment.

Les configurations personnalisées peuvent être appliquées avec le paramètre -Configuration. Les 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 module Azure PowerShell et assurez-vous que le module Az.ResourceGraph est installé.

se connecter 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 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 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 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 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 retourner 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 retourner 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 Get-SqlAssessmentItem applet de commande retournant 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 Invoke-SqlAssessment cmdlet. 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.

Type:String[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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.

Type:PSObject
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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.

Type:PSObject
Alias:Target
Position:10
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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é.

Type:SeverityLevel
Alias:Severity
Valeurs acceptées:Information, Low, Medium, High
Position:Named
Valeur par défaut:Information
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ProgressAction

Détermine comment PowerShell répond aux mises à jour de progression générées par un script, une applet de commande ou un fournisseur, telles que les barres de progression générées par l’applet de commande Write-Progress. L’applet de commande Write-Progress crée des barres de progression qui affichent l’état d’une commande.

Type:ActionPreference
Alias:proga
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

System.String[]

Microsoft.SqlServer.Management.Smo.SqlSmoObject[]

Sorties

Microsoft.SqlServer.Management.Assessment.ICheck