Condividi tramite


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 trova tutti i controlli delle 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 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 modulo di Azure PowerShell e assicurarsi che sia installato il modulo Az.ResourceGraph .

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