Olá galera o/

No dia 23/04/2021 (sexta-feira), tive a oportunidade de palestrar no evento Festival da Tecnologia Microsoft, que foi organizado pela comunidade SQL Vale e patrocinado pela empresa Dataside. Desde já, deixo meus agradecimentos para a Dataside e a comunidade do SQL Vale por me concederem a oportunidade de compartilhar meu conhecimento com a comunidade.

As inscrições foram realizadas através do site do Sympla e toda a palestra foi feita na ferramenta Zoom. Todas as palestras do evento estão disponíveis no Canal do YouTube da Dataside.

Mais informações sobre o evento nos links abaixo:

Qual foi o tema da Palestra?

Minha palestra foi sobre como Escalar os DTUS de um Azure SQL Database utilizando o Azure Data Factory e o Azure Automation Account através de runbook e webhook. Além de explicar cada serviço, também realizei um laboratório mostrando como integrar os 3 serviços citados.

Qual foi o passo a passo de laboratório:

  1. Provisionar um Azure SQL Database.
  2. Provisionar um Azure Data Factory.
  3. Provisionar um Azure Automation Account.
  4. Criar e configurar o runbook para escalar as DTU’s do Azure SQL Database.
  5. Criar um Webhook vinculado ao runbook de scale.
  6. Criar um pipeline no Azure Data Factory com uma atividade de Webhook.
  7. Analisar os DTU’s do Azure SQL Database sendo alterados.

Slide utilizado na apresentação do evento em formato PDF:

Código do Runbook.
Este código recebe como parâmetros:

1 – Nome do grupo de recurso, ex.: rg-resourcegroupName
2 – Nome do Server do Azure SQL Database, ex.: server-serversqlName
3 – Nome da Database do Azure, ex.: bd-databaseName
4 – Nome Webhook. O nome deve ser: ADF-Webhook

param(    
    [string] $resourceGroupName = "**************",
    [string] $ServerName = "***********",
    [string] $DatabaseName = "****************",
    #[string] $Edition = "*****", 
    #[string] $Tier = "*****",     
    #[string] $Location = "East US 2"
    #[string] $SubscriptionId = "********-****-****-****-************",
    #[string] $azureProfilePath  = "c:\~temp\AzureRMContext.txt",
    [string] $azureProfilePath  = "",
    [string] $azureRunAsConnectionName = "AzureRunAsConnection",
    [Parameter (Mandatory = $false)]
    [object] $WebhookData
   
)

#If runbook was called from webhook, webhookdata will be NULL.
if ($WebhookData) {

     # Collect properties of WebhookData
     $WebhookBody     =     $WebhookData.RequestBody

     # Collect individual headers. Input converted from JSON.
        $Input = (ConvertFrom-Json -InputObject $WebhookBody)
        Write-Verbose "WebhookBody: $Input"
}
else
    {
   Write-Error -Message 'Runbook was not started from Webhook' -ErrorAction stop
    }

$Edition = $Input.Edition
$Tier = $Input.Tier
$Source = $Input.Origin   
write-output $Edition
write-output $Tier
write-output  $Source
Write-Verbose "Logging in to Azure..."

if($Source -ne "ADF-Webhook")
    {
   write-output "Runbook was not started from Webhook"
   Write-Error -Message 'Runbook was not started from Webhook' -ErrorAction stop
    }

# Load the profile from local file
if (-not [string]::IsNullOrEmpty($azureProfilePath))
{   
    Import-AzureRmContext -Path $azureProfilePath | Out-Null
}
# Load the profile from Azure Automation RunAS connection
elseif (-not [string]::IsNullOrEmpty($azureRunAsConnectionName))
{
    $runAsConnectionProfile = Get-AutomationConnection -Name $azureRunAsConnectionName     

    Add-AzureRmAccount -ServicePrincipal -TenantId $runAsConnectionProfile.TenantId `
        -ApplicationId $runAsConnectionProfile.ApplicationId -CertificateThumbprint $runAsConnectionProfile.CertificateThumbprint | Out-Null
}
# Interactive Login
else
{
    Add-AzureRmAccount | Out-Null
}

Write-Host " "
Write-Host " Scaling Database "

Set-AzureRmSqlDatabase -DatabaseName $DatabaseName `
                        -ServerName $ServerName `
                        -ResourceGroupName $ResourceGroupName `
                        -Edition $Edition `
                        -RequestedServiceObjectiveName $Tier

if ($WebhookData)
{
    Write-Output $WebhookData
    $parameters = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
    if ($parameters.callBackUri)
    {
        $callbackuri = $parameters.callBackUri
    }
}

if ($callbackuri)
{
    Invoke-WebRequest -Uri $callbackuri -UseBasicParsing -Method POST
}

Write-Output $callbackuri

Código utilizado no Body do componente de Webhook no pipeline do Azure Data Factory.

{
"Edition":"Basic"
,"Tier":"Basic"
,"Origin":"ADF-Webhook"
}


Vídeo da palestra em breve!!!

Agradeço a todos que participaram da minha palestra no evento.

Desejo a todos uma boa leitura, boa prática e bons estudos.

Para quem quer estudar:

  • Para a Certificação Microsoft MTA Database Fundamentals | Banco de Dados Relacional e Linguagem T-SQL.
    • Segue o link do curso na Udemy. >> LINK <<
  • Sobre Bancos da Dados no Azure
    • Segue o link do curso na Udemy. >> LINK <<

Não se esqueçam de avaliar esta postagem através da ESTRELAS abaixo das redes sociais, isso vai me ajudar muito a melhorar as postagens.

Quem quiser mandar comentários, sugestões, criticas e complementos, fiquem a vontade, pois feedbacks positivos ou negativos engradecem meu conhecimento para que possa melhorar as postagem para vocês.

Até a próxima o/