Ermitteln der richtigen SKU für Azure SQL-Datenbank, Azure SQL Managed Instance oder SQL Server auf Azure-VM für Ihre lokale Datenbank

Die Migration von Datenbanken zur Cloud kann kompliziert sein. – besonders, wenn es darum geht, das beste Ziel und die beste SKU für Azure SQL-Datenbank, SQL Managed Instance oder SQL Server auf VM für Ihre Datenbank auszuwählen. Der Datenmigrations-Assistent (DMA) hilft, diese Fragen zu beantworten und die Migration Ihrer Datenbanken zu vereinfachen, indem er diese SKU-Empfehlungen in einer benutzerfreundlichen Ausgabe bereitstellt. Anhand von Leistungsdaten kann DMA nun eine geeignete Azure SQL-Ziel-SKU empfehlen und eine entsprechende Erklärung zu der Empfehlung liefern.

Das SKU-Empfehlungsfeature ermöglicht es Ihnen sowohl, Leistungsdaten von Ihren als Datenbankhost dienenden SQL Server-Quellinstanzen zu sammeln, und empfiehlt basierend auf diesen Daten eine minimale Azure SQL Datenbank, Azure SQL Managed Instance oder SQL Server auf Azure VM SKU. Das Feature bietet Empfehlungen zu Tarif, Computeebene und Datengröße. Diese Funktionalität ist derzeit nur über die Befehlszeilenschnittstelle (CLI) verfügbar.

Im Folgenden finden Sie Anweisungen zum Ermitteln der SKU-Empfehlungen und zum Bereitstellen entsprechender Datenbanken in Azure mithilfe von DMA.

Hinweis

Wenn Sie den gesamten SQL Server-Datenbestand im großen Stil in VMware bewerten, verwenden Sie Azure Migrate, um Azure SQL-Bereitstellungsempfehlungen, Zielgrößen und monatliche Schätzungen zu erhalten.

Voraussetzungen

  • Laden Sie die aktuelle Version von DMA herunter, und installieren Sie sie. Wenn Sie bereits eine frühere Version des Tools haben, öffnen Sie es. Sie werden dann aufgefordert, DMA zu aktualisieren.
  • Installieren Sie die Mindestversion .NET Core 6.0 auf dem Toolscomputer, auf dem die Konsolenanwendung für SKU-Empfehlungen ausgeführt wird.
  • Stellen Sie sicher, dass das Konto, das zum Herstellen der Verbindung mit Ihrer lokalen SQL Server-Quelle verwendet wird, über die Sysadmin-Berechtigung verfügt.

Hinweis

Es wird empfohlen, das Tool auf einem separaten Toolscomputer (Client) mit Konnektivität mit der/den SQL-Zielinstanz(en) zu verwenden, anstatt auf dem Computer, der SQL Server selbst hostet, um einen potenziellen Mehraufwand zu minimieren. Wenn Sie Leistungsdaten für SKU-Empfehlungen sammeln, empfiehlt es sich, das Tool mehrere Stunden lang mit Standardoptionswerten auszuführen, um Workloads sowohl innerhalb als auch außerhalb der Spitzenlastzeiten abzudecken und Wartungsaufgaben wie Indexneuerstellung oder Datenbanksicherung auszuschließen. Wartungsaufgaben können sich auf den CPU-, Speicher- und IO-Verbrauch auswirken und somit höhere empfohlene SKU-Tarife nach sich ziehen.

Sammeln von Leistungsdaten

Die gesammelten Daten umfassen begrenzte Informationen zur Hardwarekonfiguration Ihres Servers sowie aggregierte SQL-spezifische Leistungsdaten aus Dynamic Management Views (DMVs) des Systems wie CPU, Arbeitsspeicher, Speichernutzung, IO-Durchsatz und IO-Latenz. Die gesammelten Daten werden zur weiteren Aggregation und Analyse lokal auf Ihrem Computer gespeichert. Die Leistungsmerkmale Ihrer Quellinstanz werden analysiert, um SKU-Empfehlungen für Azure SQL Angebote (einschließlich SQL-Datenbank, SQL Managed Instance und SQL auf Azure VM) zu ermöglichen, die Ihren Workloads am besten entsprechen und gleichzeitig kostengünstig sind.

Suchen Sie im DMA-Installationspfad nach dem Ordner „SQLAssessmentConsole“ und der Anwendung „SqlAssessment.exe“.

Screenshot of SKUConsoleApplication.exe file shown in DMA installation folder location.

Um den Datensammlungsprozess zu starten, geben Sie in der Konsolenanwendung die PerfDataCollection-Aktion mit den folgenden Argumenten an:

  • sqlConnectionStrings: (erforderlich) In Anführungszeichen gesetzte formale Verbindungszeichenfolgen für die SQL-Zielinstanzen.
  • perfQueryIntervalInSec (optional): Intervall in Sekunden, in dem Leistungsdaten abfragt werden sollen. (Standard: 30).
  • staticQueryIntervalInSec (optional): Intervall, in dem Konfigurationsdaten abgefragt und dauerhaft gespeichert werden sollen, in Sekunden. (Standard: 60).
  • numberOfIterations (optional): Anzahl der Iterationen der Leistungsdatensammlung, die vor der dauerhaften Speicherung in einer Datei ausgeführt werden sollen. Mit Standardwerten erfolgt die dauerhafte Speicherung von Leistungsdaten beispielsweise alle 30 Sekunden * 20 Iterationen = 10 Minuten. (Standard: 20).
  • outputFolder (optional): Ordner, in den bzw. aus dem Leistungsdaten, Berichte und Protokolle geschrieben/gelesen werden. (Standard: %LocalAppData%/Microsoft/SqlAssessmentConsole).

Im Folgenden wird ein Beispielaufruf gezeigt:

.\SqlAssessment.exe PerfDataCollection
--sqlConnectionStrings "Data Source=Server1;Initial Catalog=master;Integrated Security=True;" "Data Source=Server2;Initial Catalog=master;Integrated Security=True;"
--outputFolder C:\Output

Alternativ können Sie den Datensammlungsprozess aufrufen, indem Sie die entsprechenden Argumente in einer JSON-Konfigurationsdatei bereitstellen und die ausführbare Datei wie folgt ohne Aktion ausführen, um die Konfigurationsdatei an das Tool zu übergeben:

.\SqlAssessment.exe --configFile C:\path\to\config.json

Nachfolgend finden Sie eine Beispielkonfigurationsdatei (ConfigFile), die der oben beschriebenen Aktion zum Sammeln von Leistungsdaten entspricht:

  {
    "action": "PerfDataCollection",
    "sqlConnectionStrings": [
    "Data Source=Server1;Initial Catalog=master;Integrated Security=True;",
    "Data Source=Server2;Initial Catalog=master;Integrated Security=True;"
    ],
    "outputFolder": "C:\\Output"
  }

Beispielkonfigurationsdateien für alle Aktionen finden Sie im Example-Ordner im DMA-Installationspfad „GetMetadataSampleConfigFile.json“, „PerfDataCollectionSampleConfigFile.json“ und „GetSkuRecommendationSampleConfigFile.json“.

Nachdem der Befehl ausgeführt wird, werden die Leistungs- und Konfigurationsdatenpunkte als Gruppe von drei *_Counters.csv-Dateien pro Zielinstanz gespeichert, die jeweils den Server- und Instanznamen enthalten. Sie können diese Datei als Eingabe für den nächsten Teil des Prozesses verwenden, der SKU-Empfehlungen für Azure SQL-Datenbank, Azure SQL Managed Instance oder SQL Server auf Azure VM bereitstellt.

Verwenden der Konsolenanwendung zum Abrufen von SKU-Empfehlungen

Die im vorherigen Schritt gesammelten Datenpunkte werden als Eingabe für den SKU-Empfehlungsprozess verwendet.

Für die Singletonoption bietet DMA Empfehlungen für den Azure SQL-Datenbanktarif, die Computeebene und die empfohlene Speicherkonfiguration für die einzelnen Datenbanken in Ihrer SQL-Instanz.

Für Azure SQL Managed Instance und SQL Server auf Azure VM unterstützen die Empfehlungen ein Lift & Shift-Szenario. Die Konsolen-App für SKU-Empfehlungen kann Ihnen daher Empfehlungen für den Tarif für Azure SQL Managed Instance oder SQL Server auf Azure VM, die Computeebene und die empfohlene Speicherkonfiguration für die Datenbanken in Ihrer SQL-Instanz liefern. Sie können auch nur eine Teilmenge der Datenbanken angeben, die in die SKU-Empfehlungen eingeschlossen oder von ihnen ausgeschlossen werden sollen.

GetSkuRecommendation verwendet standardmäßig eine Baselinestrategie, die die gesammelten Leistungsdatenwerte für die Workload (basierend auf dem angegebenen Prozentwert) der rechten Azure SQL-SKU zuordnet. Wir bieten auch eine elastische Strategie (statistischer Ansatz), die auf der Grundlage der gesammelten Leistungsdaten eine eindeutige Preis-Leistungs-Kurve generiert, wobei die Workloadmuster anhand eines Modells analysiert werden, das auf bereits zu Azure SQL migrierten Kunden basiert.

Um den SKU-Empfehlungsprozess zu starten, geben Sie in der Konsolenanwendung die GetSkuRecommendation-Aktion mit den folgenden Argumenten an:

  • perfQueryIntervalInSec (optional): Intervall in Sekunden, in dem Leistungsdaten abgefragt wurden. Hinweis: Der angegebene Wert muss dem Wert entsprechen, der ursprünglich während der Leistungsdatensammlung verwendet wurde. (Standard: 30)
  • targetPlatform (optional): Zielplattform für SKU-Empfehlung: entweder AzureSqlDatabase, AzureSqlManagedInstance, AzureSqlVirtualMachine, oder Any. Wenn Sie Any auswählen, können SKU-Empfehlungen für alle drei Zielplattformen ausgewertet werden, und die beste Übereinstimmung wird zurückgegeben. (Standard: Any)
  • targetSqlInstance (optional): Name der SQL-Instanz, auf die die SKU-Empfehlung abzielt. (Standard: outputFolder wird nach Dateien durchsucht, die von der „PerfDataCollection“-Aktion erstellt werden, und Empfehlungen werden für jede gefundene Instanz bereitgestellt)
  • targetPercentile (optional): Perzentil der Datenpunkte, die bei der Aggregation der Leistungsdaten verwendet werden sollen. Wird nur für die Baselinestrategie verwendet (nicht elastisch). Wird nur für die Baselinestrategie verwendet (nicht elastisch). (Standard: 95)
  • scalingFactor (optional): Skalierungs- bzw. „Komfort“-Faktor, der während der SKU-Empfehlung verwendet wird. Wenn beispielsweise festgestellt wird, dass eine CPU-Anforderung von vier virtuellen Kernen mit einem Skalierungsfaktor von 150 % vorliegt, beträgt die tatsächliche CPU-Anforderung sechs virtuelle Kerne. (Standard: 100)
  • startTime (optional): UTC-Startzeit der Leistungsdatenpunkte, die bei der Aggregation berücksichtigt werden sollen, im yyyy-MM-dd HH:mm-Format. Wird nur für die Baselinestrategie verwendet (nicht elastisch). (Standard: Alle gesammelten Datenpunkte werden berücksichtigt)
  • endTime (optional): UTC-Endzeit der Leistungsdatenpunkte, die bei der Aggregation berücksichtigt werden sollen, im yyyy-MM-dd HH:mm-Format . Wird nur für die Baselinestrategie verwendet (nicht elastisch). (Standard: Alle gesammelten Datenpunkte werden berücksichtigt)
  • elasticStrategy (optional): Gibt an, ob die elastische Strategie für SKU-Empfehlungen basierend auf der Analyse der Ressourcennutzung und der Kosten-Leistungs-Analyse verwendet werden soll. Die elastische Strategie ist derzeit für Azure SQL-Datenbanken und SQL Managed Instance verfügbar, aber noch nicht für SQL Server auf einer Azure-VM als Ziel. (Standard: false)
  • databaseAllowList (optional): Leerzeichengetrennte Liste der Namen von Datenbanken, die für die SKU-Empfehlung berücksichtigt werden sollen, während alle anderen ausgeschlossen werden. Legen Sie nur einen oder keinen der folgenden Werte fest: databaseAllowList, databaseDenyList. (Standard: null)
  • databaseDenyList (optional): Leerzeichengetrennte Liste von Datenbanknamen, die von der SKU-Empfehlung ausgeschlossen werden sollen. Legen Sie nur einen oder keinen der folgenden Werte fest: databaseAllowList, databaseDenyList. (Standard: null)
  • overwrite (optional): Gibt an, ob vorhandene SKU-Empfehlungsberichte überschrieben werden sollen oder nicht. (Standard: true)
  • displayResult (optional): Gibt an, ob die SKU-Empfehlungsergebnisse in der Konsole ausgegeben werden sollen oder nicht. (Standard: true)
  • outputFolder (optional): Ordner, in den bzw. aus dem Leistungsdaten, Berichte und Protokolle geschrieben/gelesen werden. (Standard: %LocalAppData%\Microsoft\SqlAssessment)
  • suppressPreviewFeatures (optional): Wenn dieser Wert auf „true“ festgelegt ist, wird jedes Azure-Feature, das sich in einem Vorschauzeitraum befindet, nicht in die Empfehlung eingeschlossen. (Standard: false)

Erweiterte Einstellungen für die SKU-Empfehlungen finden Sie in der Console.Settings.json-Datei im Stammverzeichnis. Derzeit enthält sie die folgenden anpassbaren Parameter:

CommandTimeoutGroupSetting: Ruft die Zeit in Sekunden ab, die vor Eintreten eines Timeouts auf die Ausführung von SQL-Abfragebefehlen gewartet wird.

  • PerfCollectionCommandTimeout: Befehlstimeout für potenziell lang ausgeführte Abfragen im Zusammenhang mit der Leistungsdatensammlung (Standardwert: 300)
  • DefaultCollectionCommandTimeout: Befehlstimeout für alle anderen Abfragen (Standardwert: 120)

ThrottlingGroupSetting: Anzahl der parallelen Aufgaben, die basierend auf der Anzahl der Kerne auf dem Computer erstellt werden sollen

  • ServerInstancesParallelCount: Anzahl der Serverinstanzen, die parallel bewertet werden sollen (Standardwert: 2)
  • DatabasesParallelCount: Anzahl der Datenbanken, die parallel bewertet werden sollen (Standardwert: 4)
  • UserDefinedObjectsParallelCountPerDb: Anzahl der benutzerdefinierten Objekte (gespeicherte Prozeduren, Ansichten, Trigger usw.), die parallel pro Datenbank bewertet werden sollen (Standardwert: 4)

AllowTelemetry: Gibt an, ob die Sammlung und Übertragung anonymer Featurenutzungs- und Diagnosedaten an Microsoft zugelassen werden soll oder nicht. (Standard: true)

Alternativ können Sie den SKU-Empfehlungsprozess aufrufen, indem Sie die entsprechenden Argumente in einer JSON-Konfigurationsdatei bereitstellen und die ausführbare Datei wie folgt ohne Aktion ausführen, um die Konfigurationsdatei an das Tool zu übergeben:

.\SqlAssessment.exe --configFile C:\path\to\config.json

Die folgende Konfigurationsdatei (ConfigFile) entspricht der zuvor beschriebenen SKU-Empfehlungen-Aktion:

{
    "action": "GetSkuRecommendation",
    "outputFolder": "C:\\Output",
    "targetPlatform": "AzureSqlDatabase",
    "targetSqlInstance": "Server1",
    "targetPercentile": 95,
    "scalingFactor": 100,
    "startTime": "2020-01-01 00:00",
    "endTime": "2022-01-01 00:00",
    "perfQueryIntervalInSec": 30,
    "overwrite": "true"
}

Um SKU-Empfehlungen für eine bestimmte Azure SQL-Plattform abzurufen, statt sie automatisch auszuwählen, stellen Sie wie folgt einen Wert für die --targetPlatform-Option bereit:

Beispiel 1: Abrufen von SKU-Empfehlungen für Azure SQL-Datenbank.

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlDatabase

Beispiel 2: Abrufen von SKU-Empfehlungen mithilfe einer elastischen Strategie für Azure SQL Managed Instance.

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlManagedInstance
--elasticStrategy true

Beispiel 3: Abrufen von SKU-Empfehlungen für Azure SQL VM.

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlVirtualMachine

Beispiel 4: Abrufen von SKU-Empfehlungen für Azure SQL Virtual Machine und Unterdrücken von Previewfunktionen.

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlVirtualMachine
--suppressPreviewFeatures True

Der folgende Screenshot ist eine Beispielausgabe einer Empfehlung für die Azure SQL-Datenbank:

Screenshot of Azure SQL Database SKU tier and sizing recommendations shown in SQLAssessment console.

Der folgende Screenshot ist eine Beispielausgabe einer Empfehlung für Azure SQL Managed Instance:

Screenshot of Azure SQL Managed Instance SKU tier and size recommendations shown in console.

Der folgende Screenshot ist eine Beispielausgabe einer Empfehlung für einen SQL Server auf Azure VM:

Screenshot of SQL Server on Azure VM SKU tier and size recommendations output shown in console.

Die Ausgabe der SKU-Empfehlung wird sowohl als detaillierter Bericht im JSON-Format als auch als einfach zu lesende HTML-Datei gespeichert. Die Ausgabe umfasst die folgenden Abschnitte:

  • Instanzname: Name der lokalen SQL Server-Instanz
  • Datenbankname: Name der lokalen SQL Server-Datenbank
  • SKU-Empfehlung: Das kostengünstigste SKU-Angebot unter allen leistungsberechtigten SKUs, die Ihre Workloads erfüllen können.
  • Empfehlungsgrund: Für jeden empfohlenen Tarif liefern wir die Gründe und gesammelten Datenwerte, die den Empfehlungen zugrunde liegen.

Die endgültig empfohlenen Tarif- und Konfigurationswerte für den entsprechenden Tarif entsprechen der Mindest-SKU, die erforderlich ist, um Ihre Abfragen in Azure mit einer ähnlichen Erfolgsrate wie Ihre lokalen Datenbanken auszuführen.

Nächste Schritte