Get-SqlAssessmentItem

Obtient les vérifications des bonnes pratiques d’évaluation SQL disponibles pour un objet SQL Server choisi.

Syntax

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

Description

L’applet de commande Get-SqlAssessmentItem recherche toutes les bonnes pratiques disponibles pour chaque objet d’entrée. Pour plus d’informations, consultez 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 PowerShell SQL Server, afin qu’il 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’un case activée pour un objet choisi varie selon la version SQL Server, la plateforme et le type d’objet. 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é. En outre, vous pouvez 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.

SQL Server sur la prise en charge des machines virtuelles Azure

Avec les applets de commande SQL Assessment, vous pouvez évaluer un instance de SQL Server sur une machine virtuelle Azure non seulement en tant que SQL Server locale, 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 un instance de SQL Server sur une machine virtuelle Azure est de taille recommandée.

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

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

REMARQUE. Il est possible d’utiliser la connexion de compte Azure persistante entre les sessions PowerShell, c’est-à-dire d’appeler Connect-AzAccount dans une session et d’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 des vérifications pour les instance locales par défaut

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 le instance par défaut de SQL Server en cours d’exécution sur l’ordinateur actuel.

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

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 le instance par défaut de SQL Server en cours d’exécution 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 le instance par défaut de SQL Server en cours d’exécution 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 une 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 dont le nom se termine 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 dont le nom se termine par des chiffres sont traitées.

Exemple 7 : Obtenir des vérifications pour 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 retournant 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 retournant 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 retournant toutes les vérifications liées à la sauvegarde pour toutes les bases de données sur les SQL Server instance locales 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 comment obtenir des vérifications pour un $serverInstance et en sélectionner certaines 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 explicitement les informations d’identification

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 des case activée SQL Assessment avec des informations d’identification spécifiées explicitement.

Exemple 13 : Obtenir la liste des règles d’évaluation SQL pour les SQL Server sur les machines virtuelles Azure instance

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 la liste des règles applicables à un SQL Server particulier sur les instance de machines virtuelles Azure.

Une connexion d’abonnement Azure active permet des 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, case activée ID ou étiquettes.

Pour chaque objet case activée, Get-SqlAssessmentItem retourne ce case activée s’il prend en charge l’objet d’entrée.

Pour chaque ID de case activée, Get-SqlAssessmentItem retourne le case activée correspondant s’il prend en charge l’objet d’entrée.

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

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Aliases:Target
Position:10
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-MinSeverity

Spécifie le niveau de gravité minimal pour les vérifications à trouver. Par exemple, les vérifications des niveaux Moyen, Faible ou Information ne sont pas retournées lorsque -MinSeverity High.

Type:SeverityLevel
Aliases:Severity
Accepted values:Information, Low, Medium, High
Position:Named
Default value:Information
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entrées

System.String[]

Microsoft.SqlServer.Management.Smo.SqlSmoObject[]

Sorties

Microsoft.SqlServer.Management.Assessment.ICheck