SQL-Bewertungs-API

Gilt für: SQL Server 2012 (11.x) und höher Azure SQL Managed InstanceSQL Server für Azure Virtual Machines SQL Server für Linux

Die API für die SQL-Bewertung bietet einen Mechanismus, um die Konfiguration Ihrer SQL Server-Instanz nach Best Practices zu bewerten. Die API umfasst einen vordefinierten Regelsatz, der vom SQL Server-Team vorgeschlagene bewährte Methoden enthält. Dieser Regelsatz wird mit der Veröffentlichung neuer Versionen erweitert. Gleichzeitig wurde die API als hochgradig anpassbare und erweiterbare Lösung konzipiert. Benutzer*innen können die Standardregeln optimieren und eigene Regeln erstellen.

Die API für die SQL-Bewertung ist nützlich, wenn Sie sicherstellen möchten, dass Ihre SQL Server-Konfiguration den empfohlenen Best Practices entspricht. Nach einer anfänglichen Bewertung kann die Konfigurationsstabilität durch regelmäßig durchgeführte Bewertungen nachverfolgt werden.

Die API kann verwendet werden, um folgende Systeme zu bewerten:

Die API wird auch von der SQL Server-Bewertungserweiterung für Azure Data Studio (ADS) verwendet.

Hinweis

Die API für die SQL-Bewertung bietet eine Bewertungsgrundlage für eine Vielzahl von Bereichen, aber sie wird nicht tief in die Sicherheit integriert. Es wird empfohlen, die SQL-Sicherheitsrisikobewertung zu verwenden, um Ihre Datenbanksicherheit proaktiv zu verwenden.

Regeln

Regeln, die gelegentlich auch als Überprüfungen bezeichnet werden, werden in JSON-formatierten Dateien definiert. Das Regelsatzformat erfordert, dass ein Regelsatzname und eine Version angegeben werden. Wenn Sie benutzerdefinierte Regelsätze verwenden, können Sie so leicht erkennen, welche Empfehlungen aus welchem Regelsatz stammen.

Der von Microsoft bereitgestellte Regelsatz ist auf GitHub verfügbar. Sie können den gesamten Regelsatz im Beispielrepository anzeigen.

Cmdlets für SQL-Bewertung und zugehörige Erweiterungen

Direktes Verwenden der API

Die SQL-Bewertungs-API ist verfügbar und kann mithilfe von verwaltetem Code über jede dieser Komponenten verwendet werden:

Bevor Sie mit der Verwendung der API der SQL-Bewertung selbst beginnen, führen Sie eine der folgenden Installationen durch:

Das SMO-Framework wird um die API-Erweiterung für die SQL-Bewertung ergänzt, die folgende Methoden bereitstellt:

  • GetAssessmentItems: gibt verfügbare Überprüfungen für ein bestimmtes SQL-Objekt zurück (IEnumerable<...>)

  • GetAssessmentResults: wertet die Bewertung synchron aus und gibt etwaige Fehler zurück (IEnumerable<...>)

  • GetAssessmentResultsList: wertet die Bewertung asynchron aus und gibt etwaige Fehler zurück (Task<...>)

Verwenden der API über PowerShell

Wenn Sie die SQL-Bewertungs-API über PowerShell aufrufen möchten, müssen Sie das SQL Server-PowerShell-Modul installieren. Das SqlServer-Modul stellt zwei Cmdlets bereit, die mit der SQL-Bewertungs-API funktionieren:

  • Get-SqlAssessmentItem: stellt eine Liste der verfügbaren Bewertungsüberprüfungen für ein SQL Server-Objekt bereit

  • Invoke-SqlAssessment: stellt die Ergebnisse einer Bewertung bereit

Erste Schritte mit den Cmdlets für die SQL-Bewertung

Eine Bewertung wird für ein ausgewähltes SQL Server-Objekt durchgeführt. Der Standardregelsatz enthält nur Überprüfungen für zwei Objektarten: Server und Database (die API unterstützt zwei weitere Typen: Filegroup und AvailabilityGroup). Wenn Sie eine SQL Server-Instanz und alle zugehörigen Datenbanken bewerten möchten, müssen Sie die Cmdlets der SQL-Bewertung für jedes Objekt separat ausführen. Alternativ können Sie die zu bewertenden Objekte in einer Variablen oder in der Pipeline an die Cmdlets der SQL-Bewertung übergeben.

SqlServer- und RegisteredServer-Objekte sind austauschbar. Deshalb können Sie ein jedes dieser Objekte an die Cmdlets der SQL-Bewertung übergeben.

Gehen Sie zum Einstieg die folgenden Beispiele durch.

  1. Rufen Sie eine Liste der verfügbaren Überprüfungen für eine lokale Standardinstanz ab, um sich mit den Überprüfungen vertraut zu machen. In diesem Beispiel wird die Ausgabe des Get-SqlInstance-Cmdlets an das Get-SqlAssessmentItem-Cmdlet weitergereicht, um das Instanzobjekt zu übergeben.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. Rufen Sie eine Liste der verfügbaren Überprüfungen für alle Datenbanken der Instanz ab. Hier verwenden wir das Get-Item-Cmdlet und einen mit dem Windows PowerShell-SQL Server-Anbieter implementierten Pfad, um eine Liste der Datenbanken abzurufen und diese anschließend an das Get-SqlDatabase-Cmdlet weiterzureichen.

    Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItem
    

    Sie können hierzu auch das Get-SqlDatabase-Cmdlet verwenden.

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. Rufen Sie die Bewertung der Instanz auf, und speichern Sie die Ergebnisse in einer SQL Server-Tabelle. In diesem Beispiel wird die Ausgabe des Get-SqlInstance-Cmdlets an das Invoke-SqlAssessment-Cmdlet weitergereicht, dessen Ergebnisse an das Write-SqlTableData-Cmdlet weitergereicht werden. Das Invoke-Assessment-Cmdlet wird in diesem Beispiel mit dem -FlattenOutput-Parameter ausgeführt. Durch diesen Parameter ist die Ausgabe für das Write-SqlTableData-Cmdlet geeignet. Fehlt der Parameter, löst das Cmdlet einen Fehler aus.

    Get-SqlInstance -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    

    Rufen wir jetzt eine Bewertung für alle Datenbanken der Instanz auf und fügen die Ergebnisse in dieselbe Tabelle ein.

    Get-SqlDatabase -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    
  4. Folgen Sie den Beschreibungen und Links in der Tabelle, um die Empfehlungen besser zu verstehen.

  5. Passen Sie die Regeln basierend auf Ihrer Umgebung und den Organisationsanforderungen an (siehe unten).

  6. Planen Sie eine Aufgabe oder einen Auftrag, um die Bewertung regelmäßig oder bei Bedarf auszuführen, um den Fortschritt zu messen.

Anpassen von Regeln

Regeln sind so entworfen, dass sie angepasst und erweitert werden können. Der Regelsatz von Microsoft ist so konzipiert, dass er für die meisten Umgebungen geeignet ist. Es gibt jedoch keinen Regelsatz, der für jede einzelne Umgebung funktioniert. Benutzer können eigene JSON-Dateien schreiben und vorhandene Regeln anpassen oder neue Regeln erstellen. Im Repository mit Beispielen finden Sie Beispiele für Anpassungen und den vollständigen von Microsoft veröffentlichten Regelsatz. Weitere Informationen zum Ausführen der Cmdlets der SQL-Bewertung mit benutzerdefinierten JSON-Dateien erhalten Sie über das Get-Help-Cmdlet.

Verfügbare Optionen für die Regelanpassung

Aktivieren/Deaktivieren bestimmter Regeln oder Regelgruppen (mithilfe von Tags)

Sie können bestimmte Regeln ausstellen, wenn sie nicht auf Ihre Umgebung angewendet werden oder bis geplante Arbeiten zur Behebung des Problems abgeschlossen sind.

Ändern von Schwellenwertparametern

Bestimmte Regeln verfügen über Schwellenwerte, die mit dem aktuellen Wert einer Metrik verglichen werden, um Probleme zu ermitteln. Wenn die Standardschwellenwerte nicht geeignet sind, können Sie sie ändern.

Hinzufügen weiterer Regeln, die von Ihnen oder Drittanbietern geschrieben wurden

Sie können Regelsätze kombinieren, indem Sie dem Aufruf der SQL-Bewertungs-API mindestens eine JSON-Datei als Parameter hinzufügen. Ihre Organisation kann solche Dateien schreiben oder von einem Drittanbieter erwerben. So können Sie beispielsweise Ihre JSON-Datei, die bestimmte Regeln aus dem Microsoft-Regelsatz deaktiviert, eine weitere JSON-Datei mit nützlichen Regeln für Ihre Umgebung von einem Branchenexperten und danach eine weitere JSON-Datei verwenden, die einige Schwellenwerte in dieser JSON-Datei ändert.

Wichtig

Es wird dringend davon abgeraten, Regelsätze aus nicht vertrauenswürdigen Quellen zu verwenden, solange Sie sie nicht gründlich untersucht und sich davon überzeugt haben, dass ihre Verwendung sicher ist.

Nächste Schritte