Freigeben über


Get-SqlAssessmentItem

Ruft die bewährten Methodenüberprüfungen der SQL-Bewertung ab, die für ein ausgewähltes SQL Server-Objekt verfügbar sind.

Syntax

Default (Standardwert)

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

Beschreibung

Das Cmdlet Get-SqlAssessmentItem findet alle verfügbaren Best Practice-Prü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 Pfad zu einem beliebigen Objekt der obigen Typen enthält
  • Auflistung von Objekten

Sie können Eingabeobjekte mit SqlServer-Cmdlets wie Get-SqlInstance und Get-SqlDatabase oder einfachen PowerShell-Cmdlets wie Get-Item und Get-ChildItem abrufen. 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 abzielen, wie tempdb oder master. Darüber hinaus 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 der Prüfungen abrufen, die für das angegebene SQL Server-Objekt gelten. Außerdem können Sie die Ausgabe dieses Cmdlets als -Check Argument 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 von SQL Server auf Azure-VM

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

Um solche Regeln zu verwenden, stellen Sie eine Verbindung mit Azure mit Dem Azure PowerShell-Modul 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-Instanz in Azure VM aufrufen. Beispiel 13 zeigt den interaktiven Anmeldevorgang und die Abonnementauswahl.

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

Beispiele

Beispiel 1: Abrufen von Prüfungen auf lokale Standardinstanz

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 Überprüfungen für die Standardinstanz von SQL Server abgerufen, die auf dem aktuellen Computer ausgeführt wird.

Beispiel 2: Abrufen von Prü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 Überprüfungen für die Standardinstanz von SQL Server abgerufen, die auf dem aktuellen Computer ausgeführt wird.

Beispiel 3: Abrufen von Prüfungen mit Dem 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 Überprüfungen für die Standardinstanz von SQL Server abgerufen, die auf dem aktuellen Computer ausgeführt wird.

Beispiel 4: Abrufen von Prü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 Prüfungen mit angewendeter benutzerdefinierter Konfiguration abgerufen, die aus angegebenen JSON-Dateien abgerufen wurden. Besuchen Sie den Ordner "SQL-Bewertungsbeispiele" auf Github, um herauszufinden, wie Anpassungen vorgenommen werden.

Beispiel 5: Abrufen von Prü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
...

In diesem Beispiel wird das Cmdlet Get-SqlAssessmentItem gezeigt, das eine Reihe von SQL Server-Instanzen über die Pipeline akzeptiert.

Beispiel 6: Abrufen von Prü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
...

In diesem Beispiel wird das Cmdlet Get-SqlAssessmentItem gezeigt, das eine Reihe von SQL Server-Instanzen über die Pipeline akzeptiert. Es werden nur Instanzen verarbeitet, in denen der 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
...

Dieses Beispiel zeigt das Cmdlet Get-SqlAssessmentItem , das 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

In diesem Beispiel wird gezeigt, dass Get-SqlAssessmentItem verfügbare Prüfungen mit hohem Schweregrad für die Masterdatenbank zurückgibt. Er akzeptiert den aktuellen PowerShell-Anbieterspeicherort 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

In diesem Beispiel wird gezeigt, dass Get-SqlAssessmentItem verfügbare Prüfungen mit hohem Schweregrad für die Masterdatenbank zurückgibt.

Beispiel 10: Abrufen von Prü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

In diesem Beispiel wird das Cmdlet Get-SqlAssessmentItem gezeigt, das alle Sicherungsüberprüfungen für alle Datenbanken in der lokalen SQL Server-Standardinstanz zurückgibt.

Beispiel 11: Ausführen interaktiv ausgewählter Prüfungen

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.

In der zweiten Zeile dieses Beispiels wird das Abrufen von Überprüfungen für eine $serverInstance und die interaktive Auswahl einiger davon veranschaulicht. Ausgewählte Elemente werden in einer Arrayvariablen gespeichert, die dann als Eingabe für das Cmdlet Invoke-SqlAssessment verwendet werden kann. In diesem Fall werden nur ausgewählte Prüfungen während des Bewertungsprozesses 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 SQL-Bewertungsüberprüfungsliste mit explizit angegebenen Anmeldeinformationen abrufen.

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

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 der Regeln abrufen, die für eine bestimmte SQL Server-Instanz auf azure VM-Instanz gelten.

Eine aktive Azure-Abonnementverbindung ermöglicht Azure-bezogene Prü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 Prüfungen erfordert die SQL-Bewertung das Az.ResourceGraph-Modul.

Parameter

-Check

Mindestens eine Überprüfung, überprüfung von IDs oder Tags.

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

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

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

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Configuration

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

Parametereigenschaften

Typ:PSObject
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten: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.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-InputObject

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

Parametereigenschaften

Typ:PSObject
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Ziel

Parametersätze

(All)
Position:10
Obligatorisch.:False
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-MinSeverity

Gibt den Mindestschweregrad für zu findende Prüfungen an. Beispielsweise werden Die Überprüfungen der Ebenen "Mittel", "Niedrig" oder "Informationen" nicht zurückgegeben, wenn -MinSeverity "Hoch" zurückgegeben werden.

Parametereigenschaften

Typ:SeverityLevel
Standardwert:Information
Zulässige Werte:Information, Low, Medium, High
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Schweregrad

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

System.String

Microsoft.SqlServer.Management.Smo.SqlSmoObject

Ausgaben

Microsoft.SqlServer.Management.Assessment.ICheck