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