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]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Descrizione
Il cmdlet Get-SqlAssessmentItem
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 powerShell di SQL Server, in modo che possa ottenere un oggetto dal relativo percorso. Il percorso può essere passato in modo esplicito; in caso contrario, verrà usato il percorso corrente.
La disponibilità di un controllo per un oggetto scelto varia in base alla versione, alla piattaforma e al tipo di oggetto di SQL Server. Sono inoltre disponibili controlli destinati a database specifici, ad esempio tempdb
o master
. È anche possibile filtrare i controlli in base a tag, nomi e gravità con i parametri -MinSeverity e -Check.
Con cmdlet Get-SqlAssessmentItem, è possibile ottenere un elenco di controlli applicabili all'oggetto SQL Server specificato. Inoltre, è possibile usare l'output di questo cmdlet come argomento -Check per cmdlet Invoke-SqlAssessment.
Le configurazioni personalizzate possono essere applicate con il parametro -Configuration. Gli esempi di personalizzazione sono disponibili in Github.
Supporto di SQL Server in macchine virtuali di Azure
Con i cmdlet di Valutazione SQL è possibile valutare un'istanza di SQL Server in una macchina virtuale di Azure non solo come SQL Server locale, ma anche con regole specifiche di 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 tali regole, connettersi ad Azure con
Accedere con Azure PowerShell prima di richiamare la valutazione SQL su un'istanza di SQL Server in un'istanza di macchina virtuale di Azure. L'esempio 13 mostra la selezione interattiva del processo di accesso e della sottoscrizione.
NOTA. È possibile usare la connessione all'account Azure persistente tra le 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
...
In questo esempio vengono visualizzati tutti i controlli disponibili per l'istanza predefinita di SQL Server in esecuzione nel computer corrente.
Esempio 2: Ottenere controlli con Get-Item cmdlet
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
...
In questo esempio vengono visualizzati 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
...
In questo esempio vengono visualizzati 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. Per informazioni su come eseguire la personalizzazione, visitare cartella degli esempi di valutazione SQL su Github.
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 illustra cmdlet Get-SqlAssessmentItem accettando un set di istanze di 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 illustra cmdlet Get-SqlAssessmentItem accettando un set di istanze di SQL Server tramite pipeline. Vengono elaborate solo le istanze con il nome che termina 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
...
Questo esempio mostra cmdlet Get-SqlAssessmentItem accettando un percorso a un database di 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
Questo esempio mostra Get-SqlAssessmentItem restituendo controlli disponibili con gravità elevata per il database master. Accetta il percorso corrente del provider PowerShell 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
Questo esempio mostra Get-SqlAssessmentItem restituendo 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 cmdlet Get-SqlAssessmentItem che restituisce tutti i controlli correlati al backup per tutti i database nell'istanza predefinita di SQL Server locale.
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 cmdlet Invoke-SqlAssessment. In questo caso, durante il processo di valutazione verranno eseguiti solo i controlli scelti.
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
...
Questo esempio illustra come ottenere l'elenco di controllo di Valutazione SQL con credenziali specificate in modo esplicito.
Esempio 13: Ottenere l'elenco delle regole di valutazione SQL per l'istanza di SQL Server in una 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
...
Questo esempio illustra come ottenere un elenco di regole applicabili a una determinata istanza di SQL Server in una macchina virtuale di Azure.
Una connessione alla 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, Sql Assessment richiede il modulo Az.ResourceGraph.
Parametri
-Check
Uno o più controlli, controllare gli ID o i tag.
Per ogni oggetto check, Get-SqlAssessmentItem restituisce tale controllo se supporta l'oggetto di input.
Per ogni ID di controllo, Get-SqlAssessmentItem restituisce il controllo corrispondente se supporta l'oggetto di input.
Per i tag, Get-SqlAssessmentItem restituisce controlli con uno di questi tag.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | PSObject |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-FlattenOutput
Indica che questo cmdlet produce oggetti semplici di tipo Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat anziché Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 utilizzata come oggetto di input. Se il percorso corrente non è un oggetto SQL Server supportato, il cmdlet segnala un errore.
Tipo: | PSObject |
Alias: | Target |
Posizione: | 10 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-MinSeverity
Specifica il livello di gravità minimo per i controlli da trovare. Ad esempio, i controlli dei livelli medio, basso o informativo non verranno restituiti quando -MinSeverity Alto.
Tipo: | SeverityLevel |
Alias: | Severity |
Valori accettati: | Information, Low, Medium, High |
Posizione: | Named |
Valore predefinito: | Information |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ProgressAction
Determina in che modo PowerShell risponde agli aggiornamenti dello stato generati da uno script, un cmdlet o un provider, ad esempio le barre di stato generate dal cmdlet Write-Progress. Il cmdlet Write-Progress crea barre di stato che mostrano lo stato di un comando.
Tipo: | ActionPreference |
Alias: | proga |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
System.String[]
Microsoft.SqlServer.Management.Smo.SqlSmoObject[]
Output
Microsoft.SqlServer.Management.Assessment.ICheck