Dela via


Använda Azure Functions för att hantera beräkningsresurser för din dedikerade SQL-pool (tidigare SQL DW) i Azure Synapse Analytics

I den här självstudien används Azure Functions för att hantera beräkningsresurser för en dedikerad SQL-pool (tidigare SQL DW) i Azure Synapse Analytics.

Om du vill använda en Azure-funktionsapp med en dedikerad SQL-pool (tidigare SQL DW) måste du skapa ett konto för tjänstens huvudnamn. Kontot för tjänstens huvudnamn behöver deltagaråtkomst under samma prenumeration som din dedikerade SQL-poolinstans (tidigare SQL DW).

Distribuera timerbaserad skalning med en Azure Resource Manager-mall

För att distribuera mallen behöver du följande information:

  • Namnet på resursgruppen som din dedikerade SQL-poolinstans (tidigare SQL DW) finns i
  • Namnet på servern som din dedikerade SQL-poolinstans (tidigare SQL DW) finns i
  • Namnet på din dedikerade SQL-poolinstans (tidigare SQL DW)
  • Klientorganisations-ID (katalog-ID) för ditt Microsoft Entra-ID
  • Prenumerations-ID:t
  • Program-ID för tjänstens huvudkonto
  • Hemlig nyckel för tjänstens huvudkonto

När du har föregående information distribuerar du den här mallen:

Image showing a button labeled

När du har distribuerat mallen bör du hitta tre nya resurser: en kostnadsfri Azure App Service-plan, en förbrukningsbaserad funktionsappplan och ett lagringskonto som hanterar loggningen och driftkön. Fortsätta att läsa mer i andra avsnitt om du vill se hur du ändrar de distribuerade funktionerna så att de passar dina behov.

Ändra tid för skalningsåtgärden

  1. Gå till funktionsapptjänsten. Om du har distribuerat mallen med standardvärden ska tjänsten ha namnet DWOperations. När funktionsappen är öppen bör du se fem funktioner som har driftsatts inom ramen för din funktionsapptjänst.

    Functions that are deployed with template

  2. Välj antingen DWScaleDownTrigger eller DWScaleUpTrigger för att skala upp eller skala ned. I den nedrullningsbara menyn väljer du Integrera.

    Select Integrate for function

  3. Det aktuella värdet ska antingen vara %ScaleDownTime% eller %ScaleUpTime%. Dessa värden anger att schemat baseras på värden som definierats i dina programinställningar. För tillfället kan du ignorera det här värdet och ändra schemat till önskad tid baserat på nästa steg.

  4. I schemaområdet lägger du till DET CRON-uttryck som du vill återspegla hur ofta du vill att Azure Synapse Analytics ska skalas upp.

    Change function schedule

    Värdet för schedule är ett CRON-uttryck som innehåller dessa sex fält:

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

    Till exempel skulle "0 30 9 * * 1-5" återspegla en utlösare varje veckodag klockan 9:30. Mer information finns i Azure Functions schemaexempel.

Ändra beräkningsnivå

  1. Gå till funktionsapptjänsten. Om du har distribuerat mallen med standardvärden ska tjänsten ha namnet DWOperations. När funktionsappen är öppen bör du se fem funktioner som har driftsatts inom ramen för din funktionsapptjänst.

  2. Välj antingen DWScaleDownTrigger eller DWScaleUpTrigger för att skala upp eller skala ned beräkningsvärdet. När du har valt funktionerna ska fönstret innehålla filen index.js.

    Change function trigger compute level

  3. Ändra värdet för ServiceLevelObjective till den nivå du vill ha och välj Spara. ServiceLevelObjective är den beräkningsnivå som datalagerinstansen skalar till baserat på det schema som definieras i avsnittet Integrera.

Använd funktionerna Pausa eller Återuppta istället för Skala

Standardfunktionerna är för närvarande DWScaleDownTrigger och DWScaleUpTrigger. Om du vill använda funktionerna för att pausa och återuppta istället kan du aktivera DWPauseTrigger eller DWResumeTrigger.

  1. Gå till funktionsfönstret.

    Functions pane

  2. Välj på skjutreglaget för motsvarande utlösare som du vill aktivera.

  3. Navigera till fliken Integrera för respektive utlösare om du vill ändra schemat.

    Kommentar

    Den funktionella skillnaden mellan skalningsutlösare och utlösare för paus/återuppta är det meddelande som skickas till kön. Mer information finns i Lägga till en ny utlösarfunktion.

Lägg till en ny utlösare

För närvarande ingår bara två skalningsfunktioner i mallen. Med dessa funktioner kan du under en dag bara skala ned en gång och upp en gång. Om du vill ha mer detaljerad kontroll, till exempel att skala ned flera gånger per dag eller ha olika skalningsbeteende på helgerna, måste du lägga till en annan utlösare.

  1. Skapa en ny tom funktion. + Välj knappen nära din Functions-plats för att visa funktionsmallsfönstret.

    Screenshot that shows the

  2. Från Språk väljer du JavaScript och sedan TimerTrigger.

    Create new function

  3. Namnge din funktion och konfigurera ett schema. Bilden visar hur man utlöser en funktion varje lördag vid midnatt (sent fredag kväll).

    Scale down Saturday

  4. Kopiera innehållet i index.js från någon av de andra utlösarfunktionerna.

    Copy index js

  5. Ställ in åtgärdsvariabeln på önskat beteende enligt följande:

    // 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"
    }
    

Komplex schemaläggning

Det här avsnittet visar kortfattat vad som krävs för att få mer komplex schemaläggning av funktionerna pausa, återuppta och skala.

Exempel 1

Skala upp dagligen kl. 08.00 till DW600c och skala ned kl. 20:00 till DW200c.

Function Schema Åtgärd
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function2 0 0 20 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Exempel 2

Skala upp dagligen kl. 08.00 till DW1000c, skala ned en gång till DW600 kl. 16.00 och skala ned kl. 22.00 till DW200c.

Function Schema Åtgärd
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 22 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Exempel 3

Skala upp kl. 08.00 till DW1000c, skala ned en gång till DW600c klockan 16.00 på vardagar. Pausas fredagar kl. 23.00, återupptas kl. 07.00 på måndag morgon.

Function Schema Åtgärd
Function1 0 0 8 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 23 * * 5 var operation = {"operationType": "PauseDw"}
Function4 0 0 7 * * 1 var operation = {"operationType": "ResumeDw"}

Nästa steg

Läs mer om timerutlösaren Azure Functions.

Se lagringsplatsen för dedikerade SQL-poolexempel (tidigare SQL DW).