SQL Server Agent

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Este artigo fornece uma visão geral do SQL Server Agent, que é um serviço do Microsoft Windows que executa tarefas administrativas agendadas (chamadas de trabalhos) no SQL Server e na Instância Gerenciada de SQL do Azure.

Importante

Atualmente, na Instância Gerenciada de SQL do Azure, a maioria dos recursos do SQL Server Agent é compatível, mas não todos. Confira Diferenças entre o T-SQL da Instância Gerenciada de SQL do Azure e o SQL Server para obter detalhes.

Benefícios do SQL Server Agent

O SQL Server Agent usa o SQL Server para armazenar informações de trabalho. Os trabalhos contêm uma ou mais etapas de trabalho. Cada etapa contém sua própria tarefa; por exemplo, fazer o backup de um banco de dados.

O SQL Server Agent pode executar um trabalho com base em um agendamento, em resposta a um evento específico ou sob demanda. Por exemplo, se desejar fazer o backup de todos os servidores da empresa todo dia após o expediente, você pode automatizar essa tarefa. Agende o backup para ser executado após as 22:00, de segunda-feira a sexta-feira. Se o backup encontrar um problema, o SQL Server Agent poderá registrar o evento e notificar você.

Observação

Por padrão, o serviço do SQL Server Agent fica desabilitado quando o SQL Server é instalado, a menos que o usuário opte explicitamente por iniciar automaticamente esse serviço.

SQL Server Agent Components

O SQL Server Agent usa os componentes a seguir para definir as tarefas a serem executadas, quando executá-las e como relatar os sucessos ou as falhas a elas relacionados.

Use o SQL Server Configuration Manager para gerenciar o serviço do SQL Server Agent e use o SQL Server Management Studio (SSMS) para gerenciar facilmente propriedades, trabalhos, alertas, operadores e proxies do SQL Server Agent em uma interface gráfica do usuário.

Trabalhos

Um trabalho é uma série específica de ações que o SQL Server Agent executa. 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 um servidor local ou em vários servidores remotos.

Importante

Os trabalhos do SQL Server Agent que estiverem em execução no momento de um evento de failover em uma instância de cluster de failover do SQL Server não serão retomados depois do failover em outro nó de cluster de failover. Os trabalhos do SQL Server Agent que estiverem em execução no momento de uma pausa em um nó de Hyper-V não serão retomados se a pausa causar um failover em outro nó. Os trabalhos que começam, mas não são concluídos por causa de um evento de failover, são registrados em log como iniciados, mas não mostram entradas de log adicionais referentes a conclusão ou falha. Os trabalhos do SQL Server Agent nesses cenários parecem nunca ter fim.

Os trabalhos podem ser executados de várias maneiras:

  • De acordo com uma ou mais agendas.

  • Em resposta a um ou mais alertas.

  • Executando o procedimento armazenado sp_start_job.

Cada ação em um trabalho é uma etapa de trabalho. Por exemplo, uma etapa de trabalho pode consistir na execução de uma instrução Transact-SQL, na execução de um pacote do SSIS ou na emissão de um comando para um servidor do Analysis Services. As etapas de trabalho são gerenciadas como parte de um trabalho.

Cada etapa de trabalho é executada em um contexto de segurança específico. Para etapas de trabalho que usam Transact-SQL, use a instrução EXECUTE AS para definir o contexto de segurança da etapa de trabalho. Para outros tipos de etapas de trabalho, use uma conta proxy para definir o contexto de segurança para a etapa de trabalho.

Use o procedimento armazenado do sistema sp_help_job para descobrir informações sobre um trabalho específico. Use a tabela do sistema dbo.sysjobs para exibir informações sobre trabalhos. Por exemplo, use a seguinte instrução Transact-SQL (T-SQL) para exibir informações sobre todos os trabalhos em um servidor:

USE MSDB
GO
SELECT job_id, [name] FROM dbo.sysjobs;

Agendas

Uma agenda especifica quando executar um trabalho. 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:

  • Sempre que o SQL Server Agent é iniciado.

  • Sempre que a utilização da CPU do computador estiver em um nível definido como ocioso.

  • Apenas uma vez, em data e horário específicos.

  • Em uma agenda recorrente.

Para obter mais informações, veja Criar e anexar agendas a trabalhos.

Alertas

Um alerta é uma resposta automática a um evento específico. Por exemplo, um evento pode ser um trabalho que se inicia ou recursos do sistema que atingem um limite específico. É você quem define as condições sob as quais deve ocorrer um alerta.

Um alerta pode responder a uma das seguintes condições:

  • Eventos do SQL Server

  • Condições de desempenho do SQL Server

  • Eventos da Instrumentação de Gerenciamento do Windows (WMI) no computador em que o SQL Server Agent está executando

Um alerta pode executar as seguintes ações:

  • Notificar um ou mais operadores

  • Executar um trabalho

Para obter mais informações, consulte Alertas.

Operadores

Um operador define as informações de contato de um indivíduo responsável pela manutenção de uma ou mais instâncias do SQL Server. Em algumas empresas, as responsabilidades de operador são atribuídas a um indivíduo. Em empresas com vários servidores, vários indivíduos podem dividir as responsabilidades de operador. Um operador não contém informações de segurança, nem define uma entidade de segurança.

O SQL Server pode notificar os operadores de alertas por meio de...

  • Email

  • Pager (via email)

  • net send

Observação

Para enviar notificações usando net send, o serviço do Windows Messenger deve estar iniciado no computador em que reside o SQL Server Agent.

Importante

As opções Pager e net send serão removidas do SQL Server Agent em uma versão futura do SQL Server. Evite usar esses recursos em novo trabalho de desenvolvimento e planeje modificar os aplicativos que os usam atualmente.

Para enviar notificações a operadores usando email ou pagers, configure o SQL Server Agent para usar o Database Mail. Para obter mais informações, consulte Database Mail.

Você pode definir um operador como o alias de um grupo de indivíduos. Desse modo, todos os membros do alias não serão verificados ao mesmo tempo. Para obter mais informações, consulte Operadores.

Segurança para administração do SQL Server Agent

O SQL Server Agent usa as funções de banco de dados fixas SQLAgentUserRole, SQLAgentReaderRole e SQLAgentOperatorRole no banco de dados msdb para controlar o acesso ao SQL Server Agent por usuários que não são membros da função de servidor fixa sysadmin. Além dessas funções de banco de dados fixas, subsistemas e proxies ajudam os administradores de bancos de dados a garantir que cada etapa de trabalho seja executada com as permissões mínimas necessárias para realizar sua tarefa.

Funções

Membros das funções de banco de dados fixas SQLAgentUserRole, SQLAgentReaderRole e SQLAgentOperatorRole no msdb e membros da função de servidor fixa sysadmin têm acesso ao SQL Server Agent. Um usuário que não pertença a nenhuma dessas funções não poderá usar o SQL Server Agent. Para obter mais informações sobre as funções usadas pelo SQL Server Agent, confira Implementar Segurança do SQL Server Agent.

Subsistemas

Um subsistema é um objeto predefinido que representa a funcionalidade disponível a uma etapa de trabalho. Cada proxy tem acesso a um ou mais subsistemas. Os subsistemas propiciam segurança, porque delimitam o acesso à funcionalidade disponível a um proxy. Cada etapa de trabalho é executada no contexto de um proxy, com exceção das etapas de trabalho do Transact-SQL. As etapas do trabalho do Transact-SQL usam o comando EXECUTE AS para definir o contexto de segurança para o proprietário do Trabalho.

O SQL Server define os subsistemas listados na seguinte tabela:

Nome do subsistema Descrição
Script do Microsoft ActiveX Execução de uma etapa de trabalho de script ActiveX.

Aviso O subsistema de scripts do ActiveX será removido do SQL Server Agent em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
Sistema Operacional (CmdExec) Execução de um programa executável.
PowerShell Execução de uma etapa de trabalho de script PowerShell.
Distribuidor da replicação Execução de uma etapa de trabalho que ativa o Distribution Agent da replicação.
Mesclagem da replicação Execução de uma etapa de trabalho que ativa o Merge Agent da replicação.
Leitor de fila da replicação Execução de uma etapa de trabalho que ativa o Queue Reader Agent da replicação.
Instantâneo da replicação Execução de uma etapa de trabalho que ativa o Snapshot Agent da replicação.
Leitor do log de transações da replicação Execução de uma etapa de trabalho que ativa o Log Reader Agent da replicação.
Comando do Analysis Services Execute um comando do Analysis Services.
Consulta do Analysis Services Execute uma consulta do Analysis Services.
Execução do pacote SSIS Execute um pacote SSIS.

Observação

Como as etapas de trabalho do Transact-SQL não usam proxy, não há nenhum subsistema do SQL Server Agent para as etapas de trabalho do Transact-SQL.

O SQL Server Agent impõe restrições de subsistema até mesmo quando a entidade de segurança do proxy normalmente teria permissão para executar a tarefa na etapa de trabalho. Por exemplo, um proxy de um usuário que é membro da função de servidor fixa sysadmin não pode executar uma etapa de trabalho SSIS, a menos que o proxy tenha acesso ao subsistema SSIS, mesmo quando o usuário pode executar pacotes SSIS.

Proxies

O SQL Server Agent usa proxies para gerenciar contextos de segurança. Um proxy pode ser usado em mais de uma etapa de trabalho. Membros da função de servidor fixa sysadmin podem criar proxies.

Cada proxy corresponde a uma credencial de segurança. Cada proxy pode ser associado a um conjunto de subsistemas e um conjunto de logons. O proxy só pode ser usado para etapas de trabalho que utilizem um subsistema associado ao proxy. Para criar uma etapa de trabalho que utilize um proxy específico, o proprietário do trabalho deve usar um logon associado a esse proxy ou a um membro de uma função com acesso irrestrito a proxies. Membros da função de servidor fixa sysadmin têm acesso irrestrito a proxies. Membros de SQLAgentUserRole, SQLAgentReaderRoleou SQLAgentOperatorRole só podem usar proxies para os quais detém concessão de acesso específica. Cada usuário membro de alguma dessas funções de banco de dados fixas do SQL Server Agent deve ter acesso concedido a proxies específicos para poder criar etapas de trabalho que utilizem esses proxies.

Automatizar a administração

Use as seguintes etapas para configurar o SQL Server Agent a fim de automatizar a administração do SQL Server:

  1. Estabeleça quais tarefas administrativas ou eventos de servidor ocorrem regularmente e se essas tarefas ou eventos podem ser administrados via programação. Uma tarefa é uma boa candidata para automação sempre que envolve uma sequência previsível de etapas e ocorre em um horário específico ou em resposta a um evento específico.

  2. Defina um conjunto de trabalhos, agendamentos, alertas e operadores usando o SQL Server Management Studio, os scripts do Transact-SQL ou o SMO (SQL Server Management Objects). Para obter mais informações, consulte Criar trabalhos.

  3. Execute os trabalhos do SQL Server Agent que você definiu.

Observação

Para a instância padrão do SQL Server, o serviço SQL Server é chamado de SQLSERVERAGENT. Nas instâncias nomeadas, o serviço do SQL Server Agent é denominado SQLAgent$instancename.

Se você estiver executando várias instâncias do SQL Server, você poderá usar a administração multisservidor para automatizar as tarefas comuns em todas as instâncias. Para obter mais informações, consulte Administração automatizada em toda a empresa.

Use as seguintes tarefas para começar a usar o SQL Server Agent:

Descrição Artigo
Descreve como configurar o SQL Server Agent. Configurar o SQL Server Agent
Descreve como iniciar, parar e pausar o serviço do SQL Server Agent. Iniciar, parar ou pausar o serviço do SQL Server Agent
Descreve considerações para especificar uma conta para o serviço do SQL Server Agent. Selecionar uma conta para o Serviço do SQL Server Agent
Descreve como usar o log de erros do SQL Server Agent. Log de erros do SQL Server Agent
Descreve como usar objetos de desempenho. Usar objetos de desempenho
Descreve o Assistente de Plano de Manutenção, que é um utilitário usado para criar trabalhos, alertas e operadores a fim de automatizar a administração de uma instância do SQL Server. Usar o Assistente de Plano de Manutenção
Descreve como automatizar tarefas administrativas usando o SQL Server Agent. Tarefas de administração automatizadas (SQL Server Agent)

NOSQLPS

Do SQL Server 2019 em diante, é possível desabilitar o SQLPS. Na primeira linha de uma etapa de trabalho do tipo PowerShell, você pode adicionar #NOSQLPS, o que impede o SQL Agent de carregar automaticamente o módulo SQLPS. Agora seu trabalho do SQL Agent executará a versão do PowerShell instalada no computador e você poderá usar qualquer outro módulo do PowerShell desejado.

Para usar o módulo SqlServer na etapa de trabalho do SQL Agent, coloque esse código nas duas primeiras linhas do script.

#NOSQLPS
Import-Module -Name SqlServer