Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
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
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.
Wählen Sie entweder DWScaleDownTrigger oder DWScaleUpTrigger aus, um nach oben oder unten zu skalieren. Wählen Sie im Dropdownmenü die Option "Integrieren" aus.
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.
Fügen Sie im Zeitplanbereich den CRON-Ausdruck hinzu, der angibt, wie oft Azure Synapse Analytics skaliert werden soll.
Der Wert von
scheduleist 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
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.
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 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.
Navigieren Sie zum Bereich "Funktionen".
Wählen Sie den Schiebeschalter für die entsprechenden Auslöser aus, die Sie aktivieren möchten.
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.
Erstellen Sie eine neue leere Funktion. Wählen Sie die Schaltfläche + neben „Functions“, um den Bereich mit der Funktionsvorlage anzuzeigen.
Wählen Sie unter Sprache JavaScript und dann TimerTrigger aus.
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.
Kopieren Sie den Inhalt von index.js aus einer der anderen Triggerfunktionen.
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).