Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:Instância Gerenciada de SQL do Azure
Usando o SQL Server Agent na Instância Gerenciada do AzureSQL, você pode criar e agendar trabalhos que podem ser executados periodicamente em um ou muitos bancos de dados. Esses trabalhos do SQL Agent executam consultas Transact-SQL (T-SQL) e executam tarefas de manutenção. Este artigo aborda o uso do SQL Agent para Instância Gerenciada de SQL.
Observação
O SQL Agent não está disponível no Banco de Dados SQL do Azure ou no Azure Synapse Analytics. Em vez disso, recomendamos a A automação de trabalhos com trabalhos elásticos.
Ao usar trabalhos do SQL Agent
Há vários cenários em que você pode usar trabalhos do SQL Agent:
- Automatizar tarefas de gerenciamento e, em seguida, agendá-las para serem executadas a todo dia da semana, após horas etc.
- Implante alterações de esquema, gerenciamento de credenciais, coleta de dados de desempenho ou coleta de telemetria de locatário (cliente).
- Atualize os dados de referência (informações comuns em todos os bancos de dados) e carregue dados do Armazenamento de Blobs do Azure. Consulte BULK_INSERT para os argumentos usados para autenticar para o Armazenamento de Blobs do Azure.
- Tarefas comuns de manutenção, incluindo
DBCC CHECKDBgarantir a integridade dos dados ou a manutenção do índice para melhorar o desempenho de consulta. Configure trabalhos para serem executados em um conjunto de bancos de dados de modo recorrente, por exemplo, fora dos horários de pico. - Colete os resultados da consulta de um conjunto de bancos de dados em uma tabela central continuamente. As consultas de desempenho podem ser executadas continuamente e configuradas para disparar mais tarefas a serem executadas.
- Coletar dados para relatórios
- Agregue dados de uma coleção de bancos de dados em uma tabela de destino único.
- Executar consultas de processamento de dados mais longas em um grande conjunto de bancos de dados, por exemplo, a coleta de telemetria do cliente. Resultados são coletados em uma única tabela de destino para análise posterior.
- Movimentações de dados
- Crie trabalhos que replicam as alterações feitas em seus bancos de dados para outros bancos de dados ou colete atualizações feitas em bancos de dados remotos e aplique o que foi alterado no banco de dados.
- Crie trabalhos que carregam dados de ou para seus bancos de dados usando o SSIS (SQL Server Integration Services).
Trabalhos do SQL Agent na Instância Gerenciada de SQL
O SQL Server Agent executa trabalhos do SQL Agent que são usados para automação de tarefas na Instância Gerenciada de SQL.
Os trabalhos do SQL Agent são uma série especificada de scripts T-SQL executados contra o seu banco de dados. Use trabalhos para definir uma tarefa administrativa que pode ser executada uma ou mais vezes e monitorada quanto a êxito ou falha.
Um trabalho pode ser executado em uma instância local ou em várias instâncias remotas. Uma tarefa do SQL Agent é um componente interno do Mecanismo de Banco de Dados executado no serviço a Instância Gerenciada de SQL.
Há vários conceitos importantes em trabalhos do SQL Agent:
- As etapas de trabalho são um conjunto de uma ou muitas etapas que devem ser executadas dentro do trabalho. Para cada etapa de trabalho, você pode definir uma estratégia de repetição e a ação que deve acontecer se a etapa de trabalho for bem-sucedida ou falhar.
- Agendas definem quando o trabalho deve ser executado.
- As notificações permitem que você defina as regras usadas para notificar os operadores por email após a conclusão do trabalho.
Etapas de trabalho
As etapas de trabalho do SQL Agent são sequências de ações que o SQL Agent deve executar. Cada etapa tem uma etapa a seguir que deve ser executada se a etapa for bem-sucedida ou falhar, e um número definido de novas tentativas se falhar.
O SQL Agent permite que você crie diferentes tipos de etapas de trabalho.
- Etapas de trabalho do Transact-SQL que executam um único lote de Transact-SQL no banco de dados.
- Etapas de comando do sistema operacional/PowerShell que podem executar o script personalizado do sistema operacional.
- Etapas de trabalho do SSIS que permitem carregar dados usando o runtime do SSIS.
- Etapas de replicação que podem publicar alterações do banco de dados para outros bancos de dados.
Observação
Para obter mais informações, consulte Usar a Instância Gerenciada de SQL do Azure com o SSIS (SQL Server Integration Services) no Azure Data Factory.
A replicação transacional pode replicar as alterações de suas tabelas em outros bancos de dados na Instância Gerenciada de SQL do Azure, no Banco de Dados SQL do Azure ou no SQL Server. Para obter informações, veja Configurar a replicação na Instância Gerenciada de SQL do Azure.
No momento, não há suporte para outros tipos de etapas de trabalho na Instância Gerenciada de SQL, como replicação de mesclagem e leitor de fila.
Agendas de trabalho
Uma agenda especifica quando um trabalho é executado. Mais de um trabalho pode ser executado na mesma agenda e mais de uma agenda pode ser aplicada ao mesmo trabalho.
Uma agenda pode definir as condições a seguir para a hora em que um trabalho é executado:
- Comece sempre que o SQL Server Agent for iniciado. O trabalho é ativado após cada failover.
- Inicie uma vez, em uma data e hora específicas, o que é útil para atrasar a execução de um trabalho.
- Comece com um agendamento recorrente.
Para obter mais informações sobre como agendar um trabalho do SQL Agent, consulte agendar um trabalho.
Observação
Atualmente, a Instância Gerenciada de SQL do Azure não permite iniciar um trabalho quando a CPU está ociosa.
Notificações de trabalho
Os trabalhos do SQL Agent permitem que você receba notificações quando o trabalho é concluído com êxito ou com falha. É possível receber a notificações por email.
Se ainda não estiver habilitado, primeiro você precisará configurar o recurso Database Mail na Instância Gerenciada de SQL:
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE
Como um exercício de exemplo, configure uma conta de email para enviar as notificações por email. Atribua a conta ao perfil de email chamado AzureManagedInstance_dbmail_profile. Para enviar email usando trabalhos do SQL Agent na Instância Gerenciada de SQL, deve haver um perfil que deve ser chamado AzureManagedInstance_dbmail_profile. Caso contrário, a Instância Gerenciada de SQL não poderá enviar emails por meio do SQL Agent.
Observação
Para o servidor de email, recomendamos que você use serviços de retransmissão SMTP (Simple Mail Transfer Protocol) autenticados para enviar email. Esses serviços de retransmissão normalmente se conectam por meio das portas 25 ou 587 para conexões TLS (Transport Layer Security) ou da porta 465 para conexões SSL, no entanto, o Database Mail pode ser configurado para usar qualquer porta. Essas portas exigem uma nova regra de saída no grupo de segurança de rede da instância gerenciada. Esses serviços são usados para manter a reputação de IP e domínio para minimizar a possibilidade de domínios externos rejeitarem suas mensagens ou colocá-las na pasta SPAM. Considere um serviço de retransmissão SMTP autenticado já presente nos servidores locais. No Azure, o SendGrid é um desses serviços de retransmissão SMTP, mas há outros.
Use o seguinte script de exemplo para criar uma conta e um perfil do Database Mail e associá-los:
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'SQL Agent Account',
@description = 'Mail account for Azure SQL Managed Instance SQL Agent system.',
@email_address = '$(loginEmail)',
@display_name = 'SQL Agent Account',
@mailserver_name = '$(mailserver)' ,
@username = '$(loginEmail)' ,
@password = '$(password)';
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'AzureManagedInstance_dbmail_profile',
@description = 'E-mail profile used for messages sent by Managed Instance SQL Agent.';
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'AzureManagedInstance_dbmail_profile',
@account_name = 'SQL Agent Account',
@sequence_number = 1;
Teste a configuração do Database Mail por meio do T-SQL usando o procedimento armazenado do sistema sp_send_dbmail :
DECLARE @body VARCHAR(4000) = 'The email is sent from ' + @@SERVERNAME;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = 'ADD YOUR EMAIL HERE',
@body = 'Add some text',
@subject = 'Azure SQL Instance - test email';
É possível notificar o operador de que algo aconteceu com seus trabalhos do SQL Agent. Um operador define informações de contato para um indivíduo responsável pela manutenção de uma ou mais instâncias na Instância Gerenciada de SQL. Algumas vezes, as responsabilidades do operador são atribuídas a um indivíduo.
Em ambientes com várias instâncias gerenciadas de SQL ou instâncias do SQL Server, muitos indivíduos podem compartilhar responsabilidades do operador. Um operador não contém informações de segurança, nem define uma entidade de segurança. Idealmente, um operador não é um indivíduo cujas responsabilidades podem ser alteradas, mas um grupo de distribuição de email.
Você pode criar operadores usando o SQL Server Management Studio (SSMS) ou o script Transact-SQL mostrado no exemplo a seguir:
EXEC msdb.dbo.sp_add_operator
@name=N'AzureSQLTeam',
@enabled=1,
@email_address=N'AzureSQLTeamn@contoso.com';
Confirme o êxito ou a falha do email por meio do log do Database Mail no SSMS.
Você pode modificar qualquer trabalho do SQL Agent e atribuir operadores que são notificados por email se o trabalho for concluído, falhar ou tiver êxito. Modifique o trabalho usando o SSMS ou o seguinte script T-SQL:
EXEC msdb.dbo.sp_update_job @job_name=N'Load data using SSIS',
@notify_level_email=3, -- Options are: 1 on succeed, 2 on failure, 3 on complete
@notify_email_operator_name=N'AzureSQLTeam';
Histórico de trabalho
Atualmente, a Instância Gerenciada de SQL não permite que você altere nenhuma propriedade do SQL Agent porque elas estão armazenadas nos valores subjacentes do Registro. Isso significa que as opções para ajustar a política de retenção do Agente para registros de histórico de tarefas são fixadas no valor padrão de 1.000 registros totais e um máximo de 100 registros de histórico por tarefa.
Para obter mais informações, consulte exibir o histórico de trabalhos do SQL Agent.
Associação de função de banco de dados fixa
Se os usuários vinculados a logons não administradores forem adicionados a qualquer uma das três funções fixas de banco de dados do SQL Agent no banco de dados do sistema msdb, há um problema em que as permissões explícitas EXECUTE precisam ser concedidas a três procedimentos armazenados de sistema no banco de dados master. Se esse problema for encontrado, a mensagem de erro The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229) será mostrada.
Depois de adicionar usuários a uma função de banco de dados fixa do SQL Agent (SQLAgentUserRole, SQLAgentReaderRole ou SQLAgentOperatorRole) em msdb, para cada um dos logins do usuário adicionados a essas funções, execute o seguinte script T-SQL para conceder permissões explicitamente EXECUTE aos procedimentos armazenados do sistema listados. Este exemplo pressupõe que os nomes de usuário e de logon são os mesmos:
USE [master]
GO
CREATE USER [login_name] FOR LOGIN [login_name];
GO
GRANT EXECUTE ON master.dbo.xp_sqlagent_enum_jobs TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_is_starting TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_notify TO [login_name];
Limitações de trabalho do SQL Agent na Instância Gerenciada de SQL
Vale a pena observar as diferenças entre o SQL Agent disponível no SQL Server e como parte da Instância Gerenciada de SQL. Para obter mais informações sobre as diferenças de recursos com suporte entre o SQL Server e a Instância Gerenciada de SQL, veja Diferenças de T-SQL da Instância Gerenciada de SQL do Azure do SQL Server.
Não há suporte para alguns recursos do SQL Agent disponíveis no SQL Server na Instância Gerenciada de SQL:
- As configurações do agente SQL são somente leitura.
- Não há suporte para o procedimento armazenado do sistema
sp_set_agent_properties.
- Não há suporte para o procedimento armazenado do sistema
- No momento, não há suporte para habilitar/desabilitar o SQL Agent. O SQL Agent sempre está em execução.
- Embora as notificações sejam parcialmente compatíveis, não há suporte para o seguinte:
- Não há suporte para o Pager.
- Não há suporte para NetSend.
- Não há suporte para alertas.
- Não há suporte para proxies.
- Não há suporte para Eventlog.
- Não há suporte para o gatilho de agendamento de trabalho com base em uma CPU ociosa.
- Não há suporte para etapas de trabalho de replicação de mesclagem.
- Não há suporte para o Leitor de Fila.
- Não há suporte para o Analysis Services.
- Não há suporte para a execução de um script armazenado como um arquivo no disco.
- Não há suporte para a importação de módulos externos, como dbatools e dbachecks.
- Não há suporte para o PowerShell Core.
Conteúdo relacionado
- O que é Instância Gerenciada de SQL do Azure?
- Quais as novidades na Instância Gerenciada de SQL do Azure?
- Diferenças do T-SQL da Instância Gerenciada de SQL do Azure em relação ao SQL Server
- Comparação de recursos: Banco de Dados SQL do Azure e Instância Gerenciada de SQL do Azure
- Configurar o Database Mail
- Solucionar problemas de conectividade de SMTP de saída no Azure