SQL-Bewertungs-API
Gilt für: SQL Server 2012 (11.x) und höher Azure SQL Managed Instance SQL Server auf Azure VMs 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:
SQL Server auf Azure-VMs
Verwaltete Azure SQL-Instanz
SQL Server 2012 und höher
SQL Server auf Linux-basierten Systemen und Containern
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:
-
Releaseversion von Juni 2020 und später
SQL Server Management Objects (SMO)
Releaseversion von Juli 2019 und später
Dem SQL Server PowerShell-Modul
Releaseversion von Juli 2019 und später
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 bereitInvoke-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.
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 dasGet-SqlAssessmentItem
-Cmdlet weitergereicht, um das Instanzobjekt zu übergeben.Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
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 dasGet-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
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 dasInvoke-SqlAssessment
-Cmdlet weitergereicht, dessen Ergebnisse an dasWrite-SqlTableData
-Cmdlet weitergereicht werden. DasInvoke-Assessment
-Cmdlet wird in diesem Beispiel mit dem-FlattenOutput
-Parameter ausgeführt. Durch diesen Parameter ist die Ausgabe für dasWrite-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
Folgen Sie den Beschreibungen und Links in der Tabelle, um die Empfehlungen besser zu verstehen.
Passen Sie die Regeln basierend auf Ihrer Umgebung und den Organisationsanforderungen an (siehe unten).
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.