Get-SqlAssessmentItem

Ruft bewährte SQL-Bewertungsprüfungen ab, die für ein ausgewähltes SQL Server-Objekt verfügbar sind.

Syntax

Get-SqlAssessmentItem
   [-Check <String[]>]
   [[-InputObject] <PSObject>]
   [-Configuration <PSObject>]
   [-MinSeverity <SeverityLevel>]
   [-FlattenOutput]
   [<CommonParameters>]

Beschreibung

Das Cmdlet Get-SqlAssessmentItem sucht alle verfügbaren bewährten Methodenprüfungen für jedes Eingabeobjekt. Weitere Informationen finden Sie in der Übersicht über die SQL-Bewertungs-API.

Dieses Cmdlet akzeptiert die folgenden Eingabetypen:

  • 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
  • Zeichenfolge, die den Pfad zu einem beliebigen Objekt der oben genannten Typen enthält
  • Auflistung von Objekten

Sie können Eingabeobjekte mit SqlServer-Cmdlets wie Get-SqlInstance und Get-SqlDatabase oder einfacher PowerShell abrufen.
Cmdlets wie Get-Item und Get-ChildItem. Außerdem unterstützt das Cmdlet den SQL Server PowerShell-Anbieter, sodass es ein Objekt aus seinem Pfad abrufen kann. Der Pfad kann explizit übergeben werden, andernfalls wird der aktuelle Pfad verwendet.

Die Verfügbarkeit einer Überprüfung für ein ausgewähltes Objekt variiert je nach SQL Server Version, Plattform und Objekttyp. Außerdem gibt es Überprüfungen, die auf bestimmte Datenbanken wie tempdb oder abzielen master. Zusätzlich können Sie Überprüfungen nach Tags, Namen und Schweregrad mit den Parametern -MinSeverity und -Check filtern.

Mit dem Cmdlet Get-SqlAssessmentItem können Sie eine Liste von Überprüfungen abrufen, die für das angegebene SQL Server-Objekt gelten. Außerdem können Sie die Ausgabe dieses Cmdlets als Argument -Check für das Cmdlet Invoke-SqlAssessment verwenden.

Benutzerdefinierte Konfigurationen können mit dem Parameter -Configuration angewendet werden. Anpassungsbeispiele sind auf Github verfügbar.

Unterstützung für SQL Server auf Azure-VMs

Mit SQL Assessment-Cmdlets können Sie eine instance von SQL Server auf azure-VMs bewerten, nicht nur als lokale SQL Server, sondern auch mit Regeln, die für SQL Server auf azure-VMs spezifisch sind (solche, die Informationen zur Konfiguration des virtuellen Computers verwenden). Die AzSqlVmSize-Regel überprüft beispielsweise, ob der virtuelle Computer, der eine instance SQL Server auf einem virtuellen Azure-Computer hostet, die empfohlene Größe hat.

Um solche Regeln zu verwenden, stellen Sie mit Azure PowerShell Module eine Verbindung mit Azure her, und stellen Sie sicher, dass das Az.ResourceGraph-Modul installiert ist.

Melden Sie sich mit Azure PowerShell an, bevor Sie die SQL-Bewertung für eine SQL Server auf azure-VM-instance aufrufen. Beispiel 13 zeigt den interaktiven Anmeldeprozess und die Abonnementauswahl.

HINWEIS. Es ist möglich, die Azure-Kontoverbindung zwischen PowerShell-Sitzungen dauerhaft zu verwenden, d. h. Connect-AzAccount in einer Sitzung aufzurufen und diesen Befehl später auszulassen. Die aktuelle Version von SQL Assessment-Cmdlets erfordert jedoch, dass das Az.ResourceGraph-Modul in diesem Fall explizit importiert wird: Import-Module Az.ResourceGraph

Beispiele

Beispiel 1: Abrufen von Überprüfungen für lokale Standardeinstellungen instance

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 diesem Beispiel werden alle verfügbaren Überprüfungen für die Standard-instance von SQL Server abgerufen, die auf dem aktuellen Computer ausgeführt werden.

Beispiel 2: Abrufen von Überprüfungen mit 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 diesem Beispiel werden alle verfügbaren Überprüfungen für die Standard-instance von SQL Server abgerufen, die auf dem aktuellen Computer ausgeführt werden.

Beispiel 3: Abrufen von Überprüfungen mit Pfad zum Zielobjekt

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 diesem Beispiel werden alle verfügbaren Überprüfungen für die Standard-instance von SQL Server abgerufen, die auf dem aktuellen Computer ausgeführt werden.

Beispiel 4: Abrufen von Überprüfungen mit angewendeter benutzerdefinierter Konfiguration

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
...

In diesem Beispiel werden alle verfügbaren Überprüfungen mit angewendeter benutzerdefinierter Konfiguration abgerufen, die aus angegebenen JSON-Dateien abgerufen wurde. Besuchen Sie den Sql Assessment Samples-Ordner auf Github, um zu erfahren, wie Anpassungen vorgenommen werden können.

Beispiel 5: Abrufen von Überprüfungen für alle Instanzen auf 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
...

Dieses Beispiel zeigt das Cmdlet Get-SqlAssessmentItem, das einen Satz von SQL Server-Instanzen über die Pipeline akzeptiert.

Beispiel 6: Abrufen von Überprüfungen für alle Instanzen mit Namen, die mit Zahlen enden

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
...

Dieses Beispiel zeigt das Cmdlet Get-SqlAssessmentItem, das einen Satz von SQL Server-Instanzen über die Pipeline akzeptiert. Es werden nur Instanzen verarbeitet, deren Name mit Ziffern endet.

Beispiel 7: Abrufen von Überprüfungen für eine Datenbank nach Pfad

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 diesem Beispiel wird gezeigt, wie das Cmdlet Get-SqlAssessmentItem einen Pfad zu einer SQL Server Datenbank akzeptiert.

Beispiel 8: Abrufen von Überprüfungen mit hohem Schweregrad für eine Datenbank

PS:> cd SQLSERVER:\SQL\localhost\default\Databases\master
PS:> Get-SqlAssessmentItem -MinSeverity High

Dieses Beispiel zeigt, wie Get-SqlAssessmentItem verfügbare Überprüfungen mit hohem Schweregrad für die master-Datenbank zurückgibt. Er akzeptiert den aktuellen Speicherort des PowerShell-Anbieters als Ziel.

Beispiel 9: Abrufen von Überprüfungen mit hohem Schweregrad für eine Datenbank

PS:> $db = Get-SqlDatabase master -ServerInstance localhost
PS:> Get-SqlAssessmentItem $db -MinSeverity High

Dieses Beispiel zeigt, wie Get-SqlAssessmentItem verfügbare Überprüfungen mit hohem Schweregrad für die master-Datenbank zurückgibt.

Beispiel 10: Abrufen von Überprüfungen nach 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

Dieses Beispiel zeigt das Cmdlet Get-SqlAssessmentItem, das alle sicherungsbezogenen Überprüfungen für alle Datenbanken in lokalen Standard-SQL Server instance zurückgibt.

Beispiel 11: Interaktiv ausgewählte Überprüfungen ausführen

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.

Die zweite Zeile dieses Beispiels zeigt das Abrufen von Überprüfungen für eine $serverInstance und die interaktive Auswahl einiger dieser Überprüfungen. Ausgewählte Elemente werden in einer Arrayvariablen gespeichert, die dann als Eingabe für das Invoke-SqlAssessment-Cmdlet verwendet werden kann. In diesem Fall werden während des Bewertungsprozesses nur ausgewählte Überprüfungen ausgeführt.

Beispiel 12: Explizite Angabe von Anmeldeinformationen

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 diesem Beispiel wird gezeigt, wie Sie die Prüfliste der SQL-Bewertung mit explizit angegebenen Anmeldeinformationen abrufen.

Beispiel 13: Abrufen der SQL-Bewertungsregelliste für die SQL Server auf azure-VM-instance

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 diesem Beispiel wird gezeigt, wie Sie eine Liste von Regeln abrufen, die für eine bestimmte SQL Server auf azure-VM-instance gelten.

Eine aktive Azure-Abonnementverbindung ermöglicht Azure-bezogene Überprüfungen (azSqlVmSize in diesem Beispiel). Die erste Zeile stellt eine Verbindung mit einem Azure-Konto her, um Daten aus Azure Resource Graph abzurufen. Die zweite Zeile ist optional.

Zum Ausführen dieser Überprüfungen erfordert die SQL-Bewertung das Modul Az.ResourceGraph.

Parameter

-Check

Mindestens eine Überprüfung, Überprüfungs-IDs oder Tags.

Für jedes Überprüfungsobjekt gibt Get-SqlAssessmentItem diese Überprüfung zurück, ob das Eingabeobjekt unterstützt wird.

Get-SqlAssessmentItem gibt für jede Überprüfungs-ID die entsprechende Überprüfung zurück, wenn sie das Eingabeobjekt unterstützt.

Für Tags gibt Get-SqlAssessmentItem Überprüfungen mit einem dieser Tags zurück.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Configuration

Gibt Pfade zu Dateien an, die benutzerdefinierte Konfiguration enthalten. Anpassungsdateien werden in der angegebenen Reihenfolge auf die Standardkonfiguration angewendet. Der Bereich ist nur auf diesen Cmdletaufruf beschränkt.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FlattenOutput

Gibt an, dass dieses Cmdlet einfache Objekte vom Typ Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat anstelle von Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote erzeugt.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Gibt ein SQL Server-Objekt oder einen Pfad zu einem solchen Objekt an. Das Cmdlet gibt die entsprechenden Überprüfungen für dieses Objekt zurück. Wenn dieser Parameter weggelassen wird, wird der aktuelle Speicherort als Eingabeobjekt verwendet. Wenn der aktuelle Speicherort kein SQL Server-Objekt unterstützt wird, signalisiert das Cmdlet einen Fehler.

Type:PSObject
Aliases:Target
Position:10
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-MinSeverity

Gibt den minimalen Schweregrad für zu findende Überprüfungen an. Beispielsweise werden Überprüfungen der Mittel-, Niedrig- oder Informationsebenen nicht zurückgegeben, wenn -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

Eingaben

System.String[]

Microsoft.SqlServer.Management.Smo.SqlSmoObject[]

Ausgaben

Microsoft.SqlServer.Management.Assessment.ICheck