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