Freigeben über


Verwenden von Azure Functions zum Verwalten von Computeressourcen für Ihren dedizierten SQL-Pool (ehemals SQL DW) in Azure Synapse Analytics

Dieses Lernprogramm verwendet Azure Functions zum Verwalten von Computeressourcen für einen dedizierten SQL-Pool (vormals SQL DW) in Azure Synapse Analytics.

Um eine Azure Function App mit einem dedizierten SQL-Pool (vormals SQL DW) zu verwenden, müssen Sie ein Dienstprinzipalkonto erstellen. Das Dienstprinzipalkonto benötigt Zugriff für Mitwirkende unter demselben Abonnement wie Ihre dedizierte SQL-Pool-Instanz (früher SQL DW).

Mit einer Azure Resource Manager-Vorlage eine zeitgesteuerte Skalierung bereitstellen

Zum Bereitstellen der Vorlage benötigen Sie die folgenden Informationen:

  • Der Name der Ressourcengruppe, in der sich Ihre dedizierte SQL-Pool-Instanz (ehemals SQL DW) befindet
  • Name des Servers, auf dem sich Ihre dedizierte SQL-Poolinstanz (ehemals SQL DW) befindet
  • Name Ihrer dedizierten SQL-Pool-Instanz (ehemals SQL DW)
  • Mandanten-ID (Verzeichnis-ID) Ihrer Microsoft Entra ID
  • Abonnement-ID
  • Dienstprinzipal-Anwendungs-ID
  • Geheimer Schlüssel des Dienstprinzipals

Sobald Sie über die vorstehenden Informationen verfügen, stellen Sie diese Vorlage bereit:

Abbildung einer Schaltfläche mit der Bezeichnung „Bereitstellung in Azure“.

Nachdem Sie die Vorlage bereitgestellt haben, sollten Sie drei neue Ressourcen finden: einen kostenlosen Azure App Service Plan, einen verbrauchsbasierten Funktions-App-Plan und ein Speicherkonto, das die Protokollierung und die Betriebswarteschlange verarbeitet. Lesen Sie die anderen Abschnitte weiter, um zu erfahren, wie Sie die bereitgestellten Funktionen an Ihre Anforderungen anpassen können.

Ändern der Zeit des Skalierungsvorgangs

  1. Navigieren Sie zu Ihrem Function App-Dienst. Wenn Sie die Vorlage mit den Standardwerten bereitgestellt haben, sollte dieser Dienst dwOperations heißen. Sobald Ihre Funktions-App geöffnet ist, sollten Sie feststellen, dass fünf Funktionen für Ihren Funktions-App-Dienst bereitgestellt werden.

    Funktionen, die mit Vorlage bereitgestellt werden

  2. Wählen Sie entweder DWScaleDownTrigger oder DWScaleUpTrigger aus, um nach oben oder unten zu skalieren. Wählen Sie im Dropdownmenü die Option "Integrieren" aus.

    Wählen Sie

  3. Derzeit sollte der angezeigte Wert entweder %ScaleDownTime% oder %ScaleUpTime%sagen. Diese Werte deuten darauf hin, dass der Zeitplan auf Werten basiert, die in Ihren Anwendungseinstellungen definiert sind. Derzeit können Sie diesen Wert ignorieren und den Zeitplan basierend auf den nächsten Schritten in Ihre bevorzugte Zeit ändern.

  4. Fügen Sie im Zeitplanbereich den CRON-Ausdruck hinzu, der angibt, wie oft Azure Synapse Analytics skaliert werden soll.

    Zeitplan der Funktion ändern

    Der Wert von schedule ist ein CRON-Ausdruck mit diesen sechs Feldern:

    {second} {minute} {hour} {day} {month} {day-of-week}
    

    Beispielsweise würde "0 30 9 * * 1-5" jeden Wochentag um 9:30 Uhr einen Trigger widerspiegeln. Weitere Informationen finden Sie unter Azure Functions-Zeitplanbeispiele.

Ändern der Berechnungsebene

  1. Navigieren Sie zu Ihrem Funktionen-App-Dienst. Wenn Sie die Vorlage mit den Standardwerten bereitgestellt haben, sollte dieser Dienst dwOperations heißen. Sobald Ihre Funktions-App geöffnet ist, sollten Sie feststellen, dass fünf Funktionen für Ihren Funktions-App-Dienst bereitgestellt werden.

  2. Wählen Sie entweder DWScaleDownTrigger oder DWScaleUpTrigger aus, um den Berechnungswert nach oben zu skalieren oder zu verkleineren. Beim Auswählen der Funktionen sollte im Bereich die index.js Datei angezeigt werden.

    Ändern der Berechnungsebene des Funktionstriggers

  3. Ändern Sie den Wert von ServiceLevelObjective auf die gewünschte Ebene, und wählen Sie "Speichern" aus. ServiceLevelObjective ist die Computeebene, auf die Ihre Data Warehouse-Instanz basierend auf dem im Abschnitt "Integrieren" definierten Zeitplan skaliert wird.

Verwenden Sie Pause oder Fortsetzen anstelle von Skalierung

Derzeit sind die standardmäßig aktivierten Funktionen DWScaleDownTrigger und DWScaleUpTrigger. Wenn Sie stattdessen die Funktion zum Anhalten und Fortsetzen verwenden möchten, können Sie DWPauseTrigger oder DWResumeTrigger aktivieren.

  1. Navigieren Sie zum Bereich "Funktionen".

    Bereich

  2. Wählen Sie den Schiebeschalter für die entsprechenden Auslöser aus, die Sie aktivieren möchten.

  3. Navigieren Sie zu den Registerkarten " Integrieren " für die entsprechenden Trigger, um ihren Zeitplan zu ändern.

    Hinweis

    Der funktionale Unterschied zwischen den Skalierungstriggern und den Pausen-/Fortsetzungstriggern ist die Nachricht, die an die Warteschlange gesendet wird. Weitere Informationen finden Sie unter Hinzufügen einer neuen Triggerfunktion.

Hinzufügen einer neuen Triggerfunktion

Derzeit sind nur zwei Skalierungsfunktionen in der Vorlage enthalten. Mit diesen Funktionen können Sie im Laufe eines Tages nur einmal nach unten skalieren. Um eine präzisere Steuerung zu erhalten, wie das mehrmalige Herunterskalieren am Tag oder unterschiedliche Skalierungsverhalten an den Wochenenden, müssen Sie einen weiteren Auslöser hinzufügen.

  1. Erstellen Sie eine neue leere Funktion. Wählen Sie die Schaltfläche + neben „Functions“, um den Bereich mit der Funktionsvorlage anzuzeigen.

    Screenshot, der das Menü

  2. Wählen Sie unter Sprache JavaScript und dann TimerTrigger aus.

    Neue Funktion erstellen

  3. Benennen Sie Ihre Funktion, und legen Sie Ihren Zeitplan fest. Die Abbildung zeigt, wie man seine Funktion jeden Samstag um Mitternacht (spät am Freitagabend) auslösen kann.

    Samstag nach unten skalieren

  4. Kopieren Sie den Inhalt von index.js aus einer der anderen Triggerfunktionen.

    Index js kopieren

  5. Legen Sie die Vorgangsvariable wie folgt auf das gewünschte Verhalten fest:

    // Resume the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "ResumeDw"
    }
    
    // Pause the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "PauseDw"
    }
    
    // Scale the dedicated SQL pool (formerly SQL DW)l instance to DW600c
    var operation = {
        "operationType": "ScaleDw",
        "ServiceLevelObjective": "DW600c"
    }
    

Komplexe Planung

In diesem Abschnitt wird kurz veranschaulicht, was erforderlich ist, um eine komplexere Planung von Pausen-, Fortsetzungs- und Skalierungsfunktionen zu erhalten.

Beispiel 1

Täglich um 8 Uhr bis DW600c skalieren und um 18:00 Uhr bis DW200c herunterskalieren.

Funktion Zeitplan Vorgang
Funktion1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funktion2 0 0 20 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Beispiel 2

Tägliches Hochskalieren um 8:00 Uhr auf DW1000c, Herunterskalieren auf DW600 um 16:00 Uhr und auf DW200c um 22:00 Uhr.

Funktion Zeitplan Vorgang
Funktion1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Funktion2 0 0 16 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funktion3 0 0 22 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Beispiel 3

Skalieren Sie um 8 Uhr auf DW1000c, reduzieren Sie einmal auf DW600c um 16:00 Uhr an den Wochentagen. Hält am Freitag um 23:00 Uhr an, wird am Montagmorgen um 7:00 Uhr fortgesetzt.

Funktion Zeitplan Vorgang
Funktion1 0 0 8 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Funktion2 0 0 16 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funktion3 0 0 23 * * 5 var operation = {"operationType": "PauseDw"}
Funktion4 0 0 7 * * 1 var operation = {"operationType": "ResumeDw"}

Nächste Schritte

Weitere Informationen zum Timertrigger von Azure Functions.

Siehe dediziertes SQL-Pool - Beispiel-Repository (früher SQL DW).