Get-SqlAssessmentItem
Ottiene le procedure consigliate per la valutazione SQL disponibili per un oggetto SQL Server scelto.
Sintassi
Get-SqlAssessmentItem
[-Check <String[]>]
[[-InputObject] <PSObject>]
[-Configuration <PSObject>]
[-MinSeverity <SeverityLevel>]
[-FlattenOutput]
[<CommonParameters>]
Descrizione
Il cmdlet Get-SqlAssessmentItem trova tutte le procedure consigliate disponibili per ogni oggetto di input. Per altre informazioni, vedere panoramica dell'API di valutazione SQL.
Questo cmdlet accetta i tipi di input seguenti:
- 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
- Stringa contenente il percorso di qualsiasi oggetto dei tipi precedenti
- Raccolta di oggetti
È possibile ottenere oggetti di input con cmdlet SqlServer come Get-SqlInstance e Get-SqlDatabase o PowerShell di base
cmdlet come Get-Item e Get-ChildItem. Inoltre, il cmdlet supporta il provider di PowerShell SQL Server, in modo che possa ottenere un oggetto dal relativo percorso. Il percorso può essere passato in modo esplicito, altrimenti verrà usato il percorso corrente.
La disponibilità di un controllo per un oggetto scelto varia in base alla versione SQL Server, alla piattaforma e al tipo di oggetto. Sono inoltre disponibili controlli che riguardano database specifici come tempdb
o master
. È anche possibile filtrare i controlli in base a tag, nomi e gravità con i parametri -MinSeverity e -Check.
Con il cmdlet Get-SqlAssessmentItem è possibile ottenere un elenco di controlli applicabili all'oggetto SQL Server specificato. È anche possibile usare l'output di questo cmdlet come argomento -Check per il cmdlet Invoke-SqlAssessment .
È possibile applicare configurazioni personalizzate con il parametro -Configuration. Gli esempi di personalizzazione sono disponibili in Github.
SQL Server nel supporto di macchine virtuali di Azure
Con i cmdlet di valutazione SQL è possibile valutare un'istanza di SQL Server nella macchina virtuale di Azure non solo come SQL Server prem, ma anche con regole specifiche per SQL Server nella macchina virtuale di Azure (quelle che usano informazioni sulla configurazione della macchina virtuale). Ad esempio, la regola AzSqlVmSize verifica che la macchina virtuale che ospita un'istanza di SQL Server nella macchina virtuale di Azure sia di dimensioni consigliate.
Per usare queste regole, connettersi ad Azure con Azure PowerShell Modulo e assicurarsi che il modulo Az.ResourceGraph sia installato.
Accedere con Azure PowerShell prima di richiamare la valutazione SQL su un SQL Server nell'istanza di macchina virtuale di Azure. L'esempio 13 mostra il processo di accesso interattivo e la selezione della sottoscrizione.
NOTA: È possibile usare la connessione all'account di Azure persistente tra sessioni di PowerShell, ad esempio richiamare Connect-AzAccount in una sessione e omettere questo comando in un secondo momento. Tuttavia, la versione corrente dei cmdlet di valutazione SQL richiede che il modulo Az.ResourceGraph venga importato in modo esplicito in questo caso: Import-Module Az.ResourceGraph
Esempio
Esempio 1: Ottenere i controlli per l'istanza predefinita 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
...
Questo esempio ottiene tutti i controlli disponibili per l'istanza predefinita di SQL Server in esecuzione nel computer corrente.
Esempio 2: Ottenere controlli con il cmdlet di 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
...
Questo esempio ottiene tutti i controlli disponibili per l'istanza predefinita di SQL Server in esecuzione nel computer corrente.
Esempio 3: Ottenere controlli con il percorso dell'oggetto di destinazione
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
...
Questo esempio ottiene tutti i controlli disponibili per l'istanza predefinita di SQL Server in esecuzione nel computer corrente.
Esempio 4: Ottenere controlli con la configurazione personalizzata applicata
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
...
Questo esempio ottiene tutti i controlli disponibili con la configurazione personalizzata applicata ottenuta dai file JSON specificati. Visitare la cartella esempi di valutazione SQL in Github per scoprire come eseguire la personalizzazione.
Esempio 5: Ottenere i controlli per tutte le istanze in 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
...
Questo esempio mostra il cmdlet Get-SqlAssessmentItem che accetta un set di istanze SQL Server tramite pipeline.
Esempio 6: Ottenere i controlli per tutte le istanze con nomi che terminano con numeri
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
...
Questo esempio mostra il cmdlet Get-SqlAssessmentItem che accetta un set di istanze SQL Server tramite pipeline. Vengono elaborate solo le istanze con il nome che terminano con le cifre.
Esempio 7: Ottenere i controlli per un database in base al percorso
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
...
In questo esempio viene illustrato il cmdlet Get-SqlAssessmentItem che accetta un percorso a un database SQL Server.
Esempio 8: Ottenere controlli di gravità elevata per un database
PS:> cd SQLSERVER:\SQL\localhost\default\Databases\master
PS:> Get-SqlAssessmentItem -MinSeverity High
In questo esempio viene illustrato Get-SqlAssessmentItem che restituisce controlli disponibili con gravità elevata per il database master. Accetta la posizione del provider powerShell corrente come destinazione.
Esempio 9: Ottenere controlli di gravità elevata per un database
PS:> $db = Get-SqlDatabase master -ServerInstance localhost
PS:> Get-SqlAssessmentItem $db -MinSeverity High
In questo esempio viene illustrato Get-SqlAssessmentItem che restituisce controlli disponibili con gravità elevata per il database master.
Esempio 10: Ottenere i controlli in base al tag
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
Questo esempio mostra il cmdlet Get-SqlAssessmentItem che restituisce tutti i controlli correlati al backup per tutti i database nell'istanza di SQL Server locale predefinita.
Esempio 11: Eseguire controlli selezionati in modo interattivo
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 seconda riga di questo esempio mostra l'acquisizione di controlli per un $serverInstance e la selezione di alcuni di essi in modo interattivo. Gli elementi selezionati vengono archiviati in una variabile di matrice, che può quindi essere usata come input per il cmdlet Invoke-SqlAssessment . In questo caso, vengono eseguiti solo i controlli selezionati durante il processo di valutazione.
Esempio 12: Specificare le credenziali in modo esplicito
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
...
In questo esempio viene illustrato come ottenere l'elenco di controllo valutazione SQL con credenziali specificate in modo esplicito.
Esempio 13: Ottenere l'elenco delle regole di valutazione SQL per l'SQL Server nell'istanza di macchina virtuale di 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
...
In questo esempio viene illustrato come ottenere un elenco di regole applicabili a un determinato SQL Server nell'istanza di macchina virtuale di Azure.
Una connessione di sottoscrizione di Azure attiva abilita i controlli correlati ad Azure (AzSqlVmSize in questo esempio). La prima riga si connette a un account Azure per ottenere dati da Azure Resource Graph. La seconda riga è facoltativa.
Per eseguire questi controlli, la valutazione SQL richiede il modulo Az.ResourceGraph.
Parametri
-Check
Uno o più controlli, controllare gli ID o i tag.
Per ogni oggetto check, Get-SqlAssessmentItem restituisce che controlla se supporta l'oggetto di input.
Per ogni ID controllo, Get-SqlAssessmentItem restituisce il controllo corrispondente se supporta l'oggetto di input.
Per i tag, Get-SqlAssessmentItem restituisce i controlli con uno di questi tag.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Configuration
Specifica i percorsi dei file contenenti la configurazione personalizzata. I file di personalizzazione verranno applicati alla configurazione predefinita nell'ordine specificato. L'ambito è limitato solo a questa chiamata al cmdlet.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FlattenOutput
Indica che questo cmdlet produce oggetti semplici di tipo Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat anziché Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Specifica un oggetto SQL Server o un percorso di tale oggetto. Il cmdlet restituisce i controlli appropriati per questo oggetto. Quando questo parametro viene omesso, la posizione corrente viene usata come oggetto di input. Se il percorso corrente non è un oggetto SQL Server supportato, il cmdlet segnala un errore.
Type: | PSObject |
Aliases: | Target |
Position: | 10 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-MinSeverity
Specifica il livello minimo di gravità per i controlli da trovare. Ad esempio, i controlli dei livelli medio, basso o informativo non verranno restituiti quando -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 |
Input
System.String[]
Microsoft.SqlServer.Management.Smo.SqlSmoObject[]
Output
Microsoft.SqlServer.Management.Assessment.ICheck