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