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 SQL-pool dedikerad (tidigare känd som SQL DW) måste du skapa ett tjänstens principal-konto. Service Principal-kontot behöver deltagaråtkomst inom samma prenumeration som din dedikerade SQL-pool (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)
  • Hyresgäst-ID (katalog-ID) för ditt Microsoft Entra-ID
  • Prenumerations-ID
  • Applikations-ID för tjänsthuvudman
  • Hemlig nyckel för tjänstens huvudnamn

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

bild som visar en knapp med etiketten

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ätt att läsa de andra avsnitten för att se hur du ändrar de distribuerade funktionerna så att de passar dina behov.

Ändra tid för skalningsåtgärden

  1. Gå till Function App-tjänsten. Om du har distribuerat mallen med standardvärdena bör denna tjänst heta DWOperations. När funktionsappen är öppen bör du märka att det finns fem funktioner som distribuerats till funktionsapptjänsten.

    Funktioner som distribueras med mall

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

    Välj Integrera för funktion

  3. För närvarande ska värdet som visas säga antingen %ScaleDownTime% eller %ScaleUpTime%. Dessa värden visar att schemat baseras på värden definierade i 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 motsvarar hur ofta du vill att Azure Synapse Analytics ska skalas upp.

    Ändra funktionsschema

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

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

    Till exempel skulle "0 30 9 * * 1-5" återspegla en trigger varje vardag klockan 9:30. För mer information, besök Azure Functions schemaexempel.

Ändra beräkningsnivå

  1. Gå till din Function App-tjänst. Om du har distribuerat mallen med standardvärdena bör denna tjänst heta DWOperations. När funktionsappen är öppen bör du märka att det finns fem funktioner som distribuerats till funktionsapptjänsten.

  2. Välj antingen DWScaleDownTrigger eller DWScaleUpTrigger för att skala upp eller skala ned beräkningsvärdet. När du väljer funktionerna bör fönstret visa index.js-filen .

    #B0 #A1 Ändra funktionsutlösarens beräkningsnivå #A2 #C3

  3. Ändra värdet för ServiceLevelObjective till den nivå du vill ha och välj Spara. The ServiceLevelObjective är den beräkningsnivå som din datalagerinstans kommer att skalas till baserat på schemat som definierats i avsnittet Integrera.

Använd paus eller återupptag i stället för att skala

För närvarande är funktionerna DWScaleDownTrigger och DWScaleUpTrigger aktiverade som standard. Om du vill använda paus- och återupptagningsfunktionen i stället kan du aktivera DWPauseTrigger eller DWResumeTrigger.

  1. Gå till fönstret Funktioner.

    Funktionsfönster

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

  3. Gå till Integrera flikarna för respektive utlösare för att ändra deras tidsplan.

    Anmärkning

    Den funktionella skillnaden mellan skalningsutlösare och utlösare för paus/återuppta är det meddelande som skickas till kön. För mer information, se #B0 Lägg till en ny triggerfunktion #A1.

Lägga till en ny utlösarfunktion

För närvarande finns det bara två skalningsfunktioner som ingår 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 Funktioner-plats för att visa funktionsmallfönstret.

    #B0 #A1 Skärmbild som visar menyn "Funktionsappar" med plusikonen bredvid "Funktioner" markerad. #A2 #C3

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

    Skapa ny funktion

  3. Namnge din funktion och ange ditt schema. Bilden visar hur man kan utlösa sin funktion varje lördag vid midnatt (sent på fredagskvällen).

    #B0 #A1 skala ned lördag #A2 #C3

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

    #B0 #A1 Kopiera index js #A2 #C3

  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.

Funktion Schema Verksamhet
Funktion1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funktion 2 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.

Funktion Schema Verksamhet
Funktion1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Funktion 2 0 0 16 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funktion 3 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. Pausar fredag 23.00, återupptas 07.00 måndag morgon.

Funktion Schema Verksamhet
Funktion1 0 0 8 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Funktion 2 0 0 16 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funktion 3 0 0 23 * * 5 var operation = {"operationType": "PauseDw"}
Funktion4 0 0 7 * * 1 var operation = {"operationType": "ResumeDw"}

Nästa steg

Läs mer om timerutlösare i Azure Functions.

Se dedikerad SQL-pool (tidigare SQL DW) exempelarkiv.