Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:Azure SQL Managed Instance
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 vários 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 for SQL Managed Instance.
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 automação de tarefas com o Elastic Jobs.
Quando usar trabalhos do SQL Agent
Há vários cenários em que você pode usar trabalhos do SQL Agent:
- Automatize as tarefas de gestão e programe-as para serem executadas todos os dias da semana, fora de 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 Blob do Azure. Consulte BULK_INSERT para obter os argumentos usados para autenticar no armazenamento de Blob do Azure.
- Tarefas comuns de manutenção, incluindo
DBCC CHECKDBpara garantir a integridade dos dados ou a manutenção do índice para melhorar o desempenho da consulta. Configure trabalhos para serem executados em uma coleção de bancos de dados de forma recorrente, como fora do horário de pico. - Colete resultados de consulta de um conjunto de bancos de dados em uma tabela central continuamente. As consultas de desempenho podem ser continuamente executadas e configuradas para acionar mais tarefas a serem executadas.
- Coletar dados para relatórios
- Agregar dados de uma coleção de bancos de dados em uma única tabela de destino.
- Executar consultas de processamento de dados mais longas em um grande conjunto de bancos de dados, por exemplo, a recolha de telemetria de clientes. Os resultados são recolhidos numa única tabela de destino para posterior análise.
- Movimentos de dados
- Crie trabalhos que repliquem 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 alterações no banco de dados.
- Crie trabalhos que carregam dados de ou para seus bancos de dados usando o SQL Server Integration Services (SSIS).
Tarefas do SQL Agent na Instância Gerida do SQL
O SQL Server Agent executa trabalhos do SQL Agent que são usados para automação de tarefas na Instância Gerenciada do SQL.
As tarefas do SQL Agent são uma série especificada de scripts T-SQL no seu banco de dados. Utilize trabalhos para definir uma tarefa administrativa que pode ser executada uma ou mais vezes e monitorada quanto ao seu sucesso ou insucesso.
Um trabalho pode ser executado em uma instância local ou em várias instâncias remotas. Um trabalho do SQL Agent é um componente interno do Mecanismo de Banco de Dados que é executado dentro do serviço de Instância Gerenciada do SQL.
Há vários conceitos-chave em trabalhos do SQL Agent:
- As etapas do trabalho são um conjunto de uma ou várias 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.
- Horários definem quando o trabalho deve ser executado.
- As notificações permitem que você defina as regras que são usadas para notificar os operadores por e-mail assim que o trabalho for concluído.
Etapas do 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 seguinte 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 em Transact-SQL que executam um lote único de Transact-SQL no banco de dados.
- Etapas do sistema operativo de comando/PowerShell que podem executar um script personalizado do sistema operativo.
- Etapas de trabalho do SSIS que permitem carregar dados usando o tempo de execução do SSIS.
- Etapas de replicação que podem publicar alterações do banco de dados para outros bancos de dados.
Observação
Para saber mais, consulte Usar a instância gerenciada SQL do Azure com o SQL Server Integration Services (SSIS) no Azure Data Factory.
A replicação transacional pode replicar as alterações das tabelas em outros bancos de dados na Instância Gerenciada do SQL, no Banco de Dados SQL do Azure ou no SQL Server. Para obter informações, consulte Configurar replicação na Instância Gerenciada SQL do Azure.
Outros tipos de etapas de trabalho não são atualmente suportados na Instância Gerida do SQL, tais como replicação por mesclagem e leitura de fila.
Horários de trabalho
Uma agenda especifica quando um trabalho é executado. Mais de um trabalho pode ser executado no mesmo cronograma e mais de um agendamento pode se aplicar ao mesmo trabalho.
Uma agenda pode definir as seguintes condições para o momento em que um trabalho é executado:
- Inicie sempre que o SQL Server Agent for iniciado. O trabalho é ativado após cada failover.
- Comece uma vez, em uma data e hora específicas, o que é útil para a execução atrasada de um trabalho.
- Inicie numa agenda 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 SQL do Azure não permite que você inicie um trabalho quando a CPU está ociosa.
Notificações de emprego
Os trabalhos do SQL Agent permitem que você receba notificações quando o trabalho for concluído com êxito ou falhar. Você pode receber notificações por e-mail.
Se ainda não estiver habilitado, primeiro você precisará configurar o recurso do Database Mail na Instância Gerenciada SQL:
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE
Como exemplo de exercício, configure uma conta de e-mail para enviar as notificações por e-mail. Atribua a conta ao perfil de e-mail chamado AzureManagedInstance_dbmail_profile. Para enviar e-mail usando trabalhos do SQL Agent na Instância Gerenciada do SQL, deve haver um perfil chamado AzureManagedInstance_dbmail_profile. Caso contrário, a Instância Gerenciada do SQL não poderá enviar emails via SQL Agent.
Observação
Para o servidor de email, recomendamos que você use serviços de retransmissão SMTP autenticados para enviar e-mails. Esses serviços de retransmissão normalmente se conectam através 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 gerida. Esses serviços são usados para manter a reputação de IP e domínio para minimizar a possibilidade de que domínios externos rejeitem suas mensagens ou as coloquem na pasta de SPAM. Considere um serviço de retransmissão SMTP autenticado já em seus servidores locais. No Azure, 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, em seguida, associe-os:
-- 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 via 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';
Você pode 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 SQL. Às vezes, as responsabilidades do operador são atribuídas a um indivíduo.
Em ambientes com várias instâncias gerenciadas pelo SQL ou instâncias do SQL Server, muitas pessoas podem compartilhar responsabilidades de operador. Um operador não contém informações de segurança e não define uma entidade de segurança. Idealmente, um operador não é um indivíduo cujas responsabilidades podem mudar, mas um grupo de distribuição de e-mail.
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 sucesso ou falha do email por meio do Database Mail Log 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 for bem-sucedido. 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 do trabalho
Atualmente, a Instância Gerenciada do SQL não permite que você altere nenhuma propriedade do SQL Agent porque elas são armazenadas nos valores do Registro subjacentes. Isso significa que as opções para ajustar a política de retenção do SQL Server Agent para registos de histórico de tarefas estão definidas pelo padrão de 1.000 registos no total, com um máximo de 100 registos de histórico por tarefa.
Para obter mais informações, consulte Histórico de tarefas do SQL Agent.
Associação fixa à função de banco de dados
Se os usuários vinculados a logons não sysadmin forem adicionados a qualquer uma das três funções de banco de dados fixas do SQL Agent no banco de dados do msdb sistema, haverá um problema no qual permissões explícitas EXECUTE precisam ser concedidas a três procedimentos armazenados do sistema master no banco de dados. Se esse problema for encontrado, a mensagem de erro The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229) é mostrada.
Depois de adicionar usuários a uma função de banco de dados fixa do SQL Agent (SQLAgentUserRole, SQLAgentReaderRole ou SQLAgentOperatorRole) no msdb, para cada um dos logons do usuário adicionados a essas funções, execute o seguinte script T-SQL para conceder EXECUTE explicitamente permissões aos procedimentos armazenados do sistema listados. Este exemplo pressupõe que o nome de usuário e o nome 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 do SQL
Vale a pena observar as diferenças entre o SQL Agent disponível no SQL Server e como parte da Instância Gerenciada SQL. Para obter mais informações sobre as diferenças de funcionalidades suportadas entre o SQL Server e a Instância Gerida do SQL, consulte Diferenças de T-SQL da Instância Gerida SQL do Azure em relação ao SQL Server.
Alguns recursos do SQL Agent disponíveis no SQL Server não têm suporte na Instância Gerenciada do SQL:
- As configurações do SQL Agent são somente leitura.
- O procedimento
sp_set_agent_propertiesarmazenado do sistema não é suportado.
- O procedimento
- Atualmente, não há suporte para habilitar/desabilitar o SQL Agent. O SQL Agent está sempre em execução.
- Embora as notificações sejam parcialmente suportadas, o seguinte não é suportado:
- Pager não é suportado.
- NetSend não é suportado.
- As notificações não são suportadas.
- Não há suporte para proxies.
- Não há suporte para o Eventlog.
- O disparador de agendamento de tarefas baseado em um processador ocioso não é suportado.
- Não há suporte para etapas de tarefas de replicação de mesclagem.
- O Queue Reader não é suportado.
- 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.
- A importação de módulos externos, como dbatools e dbachecks, não é suportada.
- Não há suporte para o PowerShell Core.
Conteúdo relacionado
- O que é a Instância Gerenciada SQL do Azure?
- O que há de novo na Instância Gerenciada SQL do Azure?
- Diferenças de T-SQL na Instância Gerida de SQL do Azure em relação ao SQL Server
- Comparação de recursos: Banco de Dados SQL do Azure e Instância Gerenciada SQL do Azure
- Configurar o Correio da Base de Dados
- Solucionar problemas de conectividade SMTP de saída no Azure