Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
As recomendações de ajuste do Banco de Dados SQL do Azure são geradas pelo ajuste automático do Banco de Dados SQL do Azure. Essa solução monitora e analisa continuamente cargas de trabalho de bancos de dados, fornecendo recomendações de ajuste personalizadas para cada banco de dados individual relacionadas à criação de índice, exclusão de índice e otimização de planos de execução de consulta.
As recomendações de ajuste automático do Banco de Dados SQL do Azure podem ser exibidas no portal do Azure, recuperadas com chamadas de API REST ou usando comandos T-SQL e PowerShell . Este artigo baseia-se no uso de um script do PowerShell para recuperar recomendações de ajuste automático.
Observação
Este artigo usa o módulo Azure Az PowerShell, que é o módulo PowerShell recomendado para interagir com o Azure. Para começar a usar o módulo Az PowerShell, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, veja Migrate Azure PowerShell from AzureRM to Az.
Importante
O módulo PowerShell Azure Resource Manager (AzureRM) foi preterido em 29 de fevereiro de 2024. Todo o desenvolvimento futuro deve usar o módulo Az.Sql. Os usuários são aconselhados a migrar do AzureRM para o módulo Az PowerShell para garantir suporte e atualizações contínuos. O módulo AzureRM não é mais mantido ou suportado. Os argumentos para os comandos no módulo Az PowerShell e nos módulos AzureRM são substancialmente idênticos. Para obter mais informações sobre sua compatibilidade, consulte Apresentando o novo módulo do Az PowerShell.
Automatize as notificações por e-mail para recomendações de ajuste automático
A solução a seguir automatiza o envio de notificações por e-mail contendo recomendações de ajuste automático. A solução descrita consiste em automatizar a execução de um script do PowerShell para recuperar recomendações de ajuste usando a Automação do Azure e a automação do agendamento de trabalho de entrega de email usando o Microsoft Power Automate.
Criar conta de Automação do Azure
Para usar a Automação do Azure, a primeira etapa é criar uma conta de automação e configurá-la com os recursos do Azure a serem usados para a execução do script do PowerShell. Para saber mais sobre a Automação do Azure e seus recursos, consulte Introdução à Automação do Azure.
Siga estas etapas para criar uma Conta de Automação do Azure por meio do método de seleção e configuração de um aplicativo de Automação do Azure Marketplace:
Entre no portal do Azure.
Selecione + Criar um recurso no menu de recursos.
Pesquise por automação.
Selecione o aplicativo Automação nos resultados da pesquisa.
Uma vez dentro do painel "Criar uma conta de automação", selecione Criar.
Selecione uma assinatura e um grupo de recursos a serem usados para a execução do script do PowerShell. Insira um nome para esta conta de automação.
Selecione Avançado. Verifique se Sistema atribuído está marcado, para que uma identidade gerenciada atribuída ao sistema (SAMI) seja criada para autenticar os recursos do Azure.
Selecione Etiquetas. Considere usar tags do Azure. Por exemplo, a tag "Owner" ou "CreatedBy" para identificar quem criou o recurso e a tag "Environment" para identificar se esse recurso está em produção, desenvolvimento, etc. Para obter mais informações, consulte Desenvolver sua estratégia de nomenclatura e marcação para recursos do Azure.
Selecione Revisão+Criar.
Conclua a criação da conta de automação selecionando Criar.
Atribuir funções do Azure à conta de identidade gerenciada atribuída pelo sistema
Uma conta de automação pode usar sua identidade gerenciada atribuída ao sistema para obter tokens para acessar outros recursos protegidos pela ID do Microsoft Entra, como o Banco de Dados SQL do Azure. Estes tokens não representam nenhum utilizador específico da aplicação. Em vez disso, representam a aplicação que está a aceder ao recurso. Neste caso, por exemplo, o token representa uma conta de Automatização.
Antes de criar um runbook no Azure Automation, é crucial conceder o nível adequado de permissões à conta de automação, seguindo o princípio de privilégio mínimo. Quando você usa uma identidade gerenciada atribuída ao sistema, adicionar as funções de Colaborador do Banco de Dados SQL e Colaborador do SQL Server ao SAMI é suficiente para automatizar as tarefas do Banco de Dados SQL do Azure. Para a maioria dos cenários, se a automação tiver como alvo apenas bancos de dados específicos, use o escopo no nível do grupo de recursos. Se ele precisar operar em uma assinatura inteira, use o escopo de nível de assinatura.
O exemplo a seguir usa o Azure PowerShell para atribuir a função de Colaborador do Banco de Dados SQL na assinatura atual à conta de identidade gerenciada atribuída ao sistema.
$roleAssignmentParams = @{
ObjectId = "<automation-Identity-object-id>"
Scope = "/subscriptions/<subscription-id>"
RoleDefinitionName = "SQL DB Contributor"
}
New-AzRoleAssignment @roleAssignmentParams
Para adicionar estas funções a uma identidade gerida atribuída pelo sistema a partir do portal do Azure, siga estes passos:
- Entre no portal do Azure.
- Localize a conta de Automação do Azure recém-criada.
- Em Configurações da conta, selecione Identidade.
- Em Permissões, selecione a caixa Atribuições de função do Azure .
- Selecione Adicionar atribuição de função (Pré-visualização) .
- Na lista suspensa Escopo, selecione o conjunto de recursos ao qual a atribuição de função se aplica - Assinatura, Grupo de recursos, Função e Escopo.
- Na lista suspensa Papel, selecione um papel como Colaborador do Banco de Dados SQL.
- Selecione Guardar.
Repita as etapas da etapa Adicionar atribuição de função para adicionar a função de Colaborador do SQL Server .
Sugestão
Registre o nome da conta da Automação do Azure, a ID da assinatura e os recursos (como copiar e colar em um bloco de notas) exatamente como inserido durante a criação do aplicativo de Automação. Você precisa dessas informações mais tarde.
Se você tiver várias assinaturas do Azure para as quais gostaria de criar a mesma automação, precisará repetir esse processo para suas outras assinaturas.
Atualizar módulos de Automação do Azure
O script do PowerShell para recuperar a recomendação de ajuste automático usa os comandos Get-AzResource e Get-AzSqlDatabaseRecommendedAction para os quais o Módulo do Azure versão 4 e superior é necessário.
- Para atualizar seus módulos do Azure, consulte Suporte ao módulo Az na Automação do Azure.
Criar livro de operações de Automação do Azure
A próxima etapa é criar um Runbook na Automação do Azure dentro do qual reside o script do PowerShell para recuperação de recomendações de ajuste.
Siga estas etapas para criar um novo runbook de Automação do Azure:
- Acesse a conta de Automação do Azure que você criou na etapa anterior.
- Uma vez no painel da conta de automação, selecione o menu Runbooks à esquerda para criar um novo runbook de Automação do Azure com um script PowerShell. Para saber mais sobre como criar runbooks de automação, consulte Criar um novo runbook.
- Para adicionar um novo runbook, selecione a opção de menu +Add a runbook e, em seguida, selecione a opção Criação rápida – Criar um novo runbook.
- No painel Runbook, digite o nome do seu runbook (neste exemplo, AutomaticTuningEmailAutomation é usado), selecione o tipo de runbook como PowerShell e escreva uma descrição desse runbook para descrever sua finalidade.
- Selecione Criar para concluir a criação de um novo runbook.
Siga estas etapas para carregar um script do PowerShell dentro do runbook criado:
- Dentro do painel Editar Runbook do PowerShell , selecione RUNBOOKS na árvore de menus e expanda a exibição até ver o nome do seu runbook (neste exemplo, AutomaticTuningEmailAutomation). Selecione este guia de execução.
- Na primeira linha do "Editar Runbook do PowerShell" (começando com o número 1), copie e cole o seguinte código de script do PowerShell. Este script do PowerShell é fornecido as-is para você começar. Modifique o script para atender às suas necessidades.
No cabeçalho do script do PowerShell fornecido, você precisa substituir <SUBSCRIPTION_ID_WITH_DATABASES> pela sua ID de assinatura do Azure. Para saber como recuperar sua ID de assinatura do Azure, consulte Obtendo seu GUID de Assinatura do Azure.
No caso de várias assinaturas, você pode adicioná-las como delimitadas por vírgulas à propriedade "$subscriptions" no cabeçalho do script.
# PowerShell script to retrieve Azure SQL Database automatic tuning recommendations.
#
# Provided "as-is" with no implied warranties or support.
# The script is released to the public domain.
#
# Replace <SUBSCRIPTION_ID_WITH_DATABASES> in the header with your Azure subscription ID.
#
# Microsoft Azure SQL Database team, 2018-01-22.
# Set subscriptions : IMPORTANT – REPLACE <SUBSCRIPTION_ID_WITH_DATABASES> WITH YOUR SUBSCRIPTION ID
$subscriptions = ("<SUBSCRIPTION_ID_WITH_DATABASES>", "<SECOND_SUBSCRIPTION_ID_WITH_DATABASES>", "<THIRD_SUBSCRIPTION_ID_WITH_DATABASES>")
# Get credentials
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
# Define the resource types
$resourceTypes = ("Microsoft.Sql/servers/databases")
$advisors = ("CreateIndex", "DropIndex");
$results = @()
# Loop through all subscriptions
foreach ($subscriptionId in $subscriptions) {
Select-AzSubscription -SubscriptionId $subscriptionId
$rgs = Get-AzResourceGroup
# Loop through all resource groups
foreach ($rg in $rgs) {
$rgname = $rg.ResourceGroupName;
# Loop through all resource types
foreach ($resourceType in $resourceTypes) {
$resources = Get-AzResource -ResourceGroupName $rgname -ResourceType $resourceType
# Loop through all databases
# Extract resource groups, servers and databases
foreach ($resource in $resources) {
$resourceId = $resource.ResourceId
if ($resourceId -match ".*RESOURCEGROUPS/(?<content>.*)/PROVIDERS.*") {
$ResourceGroupName = $matches['content']
}
else {
continue
}
if ($resourceId -match ".*SERVERS/(?<content>.*)/DATABASES.*") {
$ServerName = $matches['content']
}
else {
continue
}
if ($resourceId -match ".*/DATABASES/(?<content>.*)") {
$DatabaseName = $matches['content']
}
else {
continue
}
# Skip if master
if ($DatabaseName -eq "master") {
continue
}
# Loop through all automatic tuning recommendation types
foreach ($advisor in $advisors) {
$recs = Get-AzSqlDatabaseRecommendedAction -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -AdvisorName $advisor
foreach ($r in $recs) {
if ($r.State.CurrentValue -eq "Active") {
$object = New-Object -TypeName PSObject
$object | Add-Member -Name 'SubscriptionId' -MemberType Noteproperty -Value $subscriptionId
$object | Add-Member -Name 'ResourceGroupName' -MemberType Noteproperty -Value $r.ResourceGroupName
$object | Add-Member -Name 'ServerName' -MemberType Noteproperty -Value $r.ServerName
$object | Add-Member -Name 'DatabaseName' -MemberType Noteproperty -Value $r.DatabaseName
$object | Add-Member -Name 'Script' -MemberType Noteproperty -Value $r.ImplementationDetails.Script
$results += $object
}
}
}
}
}
}
}
# Format and output results for the email
$table = $results | Format-List
Write-Output $table
Selecione Salvar para salvar o script. Quando estiver satisfeito com o script, selecione Publicar para publicar este runbook.
No painel principal do runbook, você pode optar por selecionar Iniciar para testar o script. Selecione Saída para visualizar os resultados do script executado. Este resultado será o conteúdo do seu e-mail.
Certifique-se de ajustar o conteúdo personalizando o script do PowerShell de acordo com suas necessidades.
Com as etapas acima, o script do PowerShell para recuperar recomendações de ajuste automático é carregado na Automação do Azure. O próximo passo é automatizar e agendar o trabalho de entrega de e-mail.
Automatize os trabalhos de email com o Microsoft Power Automate
Para concluir a solução, como etapa final, crie um fluxo de automação no Microsoft Power Automate que consiste em três ações (trabalhos):
- Automação do Azure - Criar tarefa – utilizado para executar o script PowerShell e obter recomendações de ajuste automático dentro do runbook de Automação do Azure.
- Azure Automation - Get job output – usado para recuperar a saída do script PowerShell executado.
- Office 365 Outlook – Enviar um email – usado para enviar email. Os e-mails são enviados usando a conta corporativa ou escolar do indivíduo que cria o fluxo.
Para saber mais sobre os recursos do Microsoft Power Automate, consulte Introdução ao Microsoft Power Automate.
O pré-requisito para esta etapa é se inscrever em uma conta do Microsoft Power Automate e entrar. Uma vez dentro da solução, siga estas etapas para configurar um novo fluxo:
- Acesse o item de menu Meus fluxos .
- Dentro de Meus fluxos, selecione o link +Criar a partir em branco na parte superior da página.
- Selecione o link Procure centenas de conectores e gatilhos.
- No campo de pesquisa, digite recorrência e selecione Agendar - Recorrência nos resultados da pesquisa para agendar a execução do trabalho de entrega de email.
- No painel Recorrência no campo Frequência, selecione a frequência de agendamento para que esse fluxo seja executado, como enviar e-mails automatizados a cada minuto, hora, dia, semana, etc.
A próxima etapa é adicionar três trabalhos (criar, obter saída e enviar e-mail) ao fluxo recorrente recém-criado. Para concluir a adição dos trabalhos necessários ao fluxo, siga estas etapas:
Criar ação para executar script do PowerShell para recuperar recomendações de ajuste
- Selecione +Nova etapa, seguida por Adicionar uma ação dentro do painel Fluxo de recorrência.
- No campo de pesquisa, digite automação e selecione Automação do Azure – Criar trabalho nos resultados da pesquisa.
- No painel Criar trabalho, configure as propriedades do trabalho. Para essa configuração, você precisa de detalhes de sua ID de assinatura do Azure, Grupo de Recursos e Conta de Automação registrados anteriormente no painel Conta de Automação. Para saber mais sobre as opções disponíveis nesta seção, consulte Automação do Azure - Criar trabalho.
- Selecione Salvar fluxo.
Crie uma ação para recuperar a saída do script PowerShell executado.
- Selecione +Nova etapa, seguida de Adicionar uma ação dentro do painel de fluxo de recorrência
- No campo de pesquisa, digite automação e selecione Automação do Azure – Obter saída de trabalho dos resultados da pesquisa. Para saber mais sobre as opções disponíveis nesta seção, consulte Automação do Azure – Obter saída de trabalho.
- Preencha os campos necessários (semelhante à criação do trabalho anterior) - preencha a ID da subscrição do Azure, o Grupo de Recursos e a Conta de Automação (conforme inserido no painel de Conta de Automação).
- Selecione dentro do campo ID do trabalho para que o menu Conteúdo dinâmico apareça. Neste menu, selecione a opção ID do trabalho.
- Selecione Salvar fluxo.
Criar uma ação para enviar email usando a integração do Office 365
- Selecione +Nova etapa, seguida por Adicionar uma ação dentro do painel Fluxo de recorrência.
- No campo de pesquisa, digite enviar um email e selecione Office 365 Outlook – Enviar um email dos resultados da pesquisa.
- No campo Para , digite o endereço de e-mail para o qual você precisa enviar o e-mail de notificação.
- No campo Assunto , digite o assunto do seu e-mail, por exemplo, "Notificação por e-mail de recomendações de ajuste automático".
- Selecione dentro do campo Corpo para que o menu Conteúdo dinâmico apareça. Neste menu, em Obter saída de trabalho, selecione Conteúdo.
- Selecione Salvar fluxo.
Sugestão
Para enviar e-mails automatizados para destinatários diferentes, crie fluxos separados. Nesses fluxos adicionais, altere o endereço de e-mail do destinatário no campo Para e a linha de assunto do e-mail no campo Assunto . A criação de novos runbooks na Automação do Azure com scripts personalizados do PowerShell (como a alteração da ID de assinatura do Azure) permite a personalização adicional de cenários automatizados, como, por exemplo, enviar e-mails para destinatários separados em recomendações de ajuste automatizado para assinaturas separadas.
As etapas anteriores configuram o fluxo de trabalho de entrega de email. Todo o fluxo que consiste em três ações construídas é mostrado na imagem a seguir.
Para testar o fluxo, selecione Executar agora. As estatísticas de execução dos trabalhos automatizados, mostrando o sucesso das notificações por e-mail enviadas, podem ser vistas no painel de análise do Flow.
O painel Análise de fluxo é útil para monitorar o sucesso das execuções de tarefas e, se necessário, para a solução de problemas. No caso de solução de problemas, você também pode querer examinar o log de execução de script do PowerShell acessível por meio do aplicativo de Automação do Azure.
A saída final do e-mail automatizado é semelhante ao seguinte e-mail recebido após a criação e execução desta solução:
Ajustando o script do PowerShell, você pode ajustar a saída e a formatação do email automatizado às suas necessidades.
Você pode personalizar ainda mais a solução para criar notificações por email com base em um evento de ajuste específico e para vários destinatários, para várias assinaturas ou bancos de dados, dependendo de seus cenários personalizados.