Compartilhar via


Agente do SQL Server

Aplica-se a:SQL ServerAzure SQL Managed Instance

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 SQL do Azure.

Importante

Na Instância Gerenciada SQL do Azure , a maioria dos recursos do SQL Server Agent, mas não todos, são suportados no momento. Consulte diferenças T-SQL da Instância Gerenciada SQL do Azure do 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. Cada etapa contém sua própria tarefa, por exemplo, fazer backup de um banco de dados.

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

Observação

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

Componentes do SQL Server Agent

O SQL Server Agent usa os seguintes componentes para definir as tarefas a serem executadas, quando executá-las e como relatar o sucesso ou a falha das tarefas.

Use o SQL Server Configuration Manager para gerir o serviço SQL Server Agent e utilize o SQL Server Management Studio (SSMS) para gerir facilmente as propriedades, trabalhos, alertas, operadores e proxies do SQL Server Agent numa interface gráfica de utilizador.

Empregos

Um de trabalho é um conjunto específico 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 ao sucesso ou falha. Um trabalho pode ser executado em um servidor local ou em vários servidores remotos.

Importante

As tarefas do SQL Server Agent que estão em execução no momento de um evento de failover em uma instância de cluster de failover do SQL Server não são retomadas após o failover para outro nó de cluster de failover. Os trabalhos do SQL Server Agent em execução no momento em que um nó Hyper-V é pausado não serão retomados se a pausa causar um failover para outro nó. Os trabalhos que começam, mas não são concluídos devido a um evento de failover, são registrados como iniciados, mas não mostram entradas de log adicionais para conclusão ou falha. Os trabalhos do SQL Server Agent nesses cenários parecem nunca ter terminado.

Você pode executar trabalhos de várias maneiras:

  • De acordo com um ou mais horários.

  • Em resposta a um ou mais alertas.

  • Ao executar o procedimento armazenado sp_start_job.

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

Cada etapa do 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 para a 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. Utilize a tabela de sistema dbo.sysjobs para exibir informações sobre tarefas. 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;

Horários

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:

  • Sempre que o SQL Server Agent for iniciado.

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

  • Uma vez, numa data e hora específicas.

  • Com uma agenda recorrente.

Para obter mais informações, consulte Criar e associar agendas a tarefas.

Alertas

Um alerta de é uma resposta automática a um evento específico. Por exemplo, um evento pode ser um trabalho iniciado ou recursos do sistema que atingem um limite específico. Você define as condições sob as quais um alerta ocorre.

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

  • Eventos do SQL Server

  • Condições de desempenho do SQL Server

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

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 de define informações de contato para um indivíduo responsável pela manutenção de uma ou mais instâncias do SQL Server. Em algumas empresas, as responsabilidades do operador são atribuídas a um indivíduo. Em empresas com vários servidores, muitos indivíduos 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.

O SQL Server pode notificar os operadores de alertas através de...

  • Correio eletrónico

  • Pager (através de e-mail)

  • net enviar

Observação

Para enviar notificações usando net send, o serviço Windows Messenger deve ser iniciado no computador onde o SQL Server Agent reside.

Importante

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

Para enviar notificações aos operadores usando email ou pagers, você deve configurar 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 para um grupo de indivíduos. Dessa forma, todos os membros desse alias não sã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, SQLAgentReaderRolee SQLAgentOperatorRole no banco de dados msdb para controlar o acesso ao SQL Server Agent para utilizadores que não são membros das funções de servidor fixas sysadmin. Além dessas funções de banco de dados fixas, os subsistemas e proxies ajudam os administradores de banco de dados a garantir que cada etapa de trabalho seja executada com as permissões mínimas necessárias para executar sua tarefa.

Funções

Membros do SQLAgentUserRole, SQLAgentReaderRolee SQLAgentOperatorRole funções de banco de dados fixas no msdbe membros da função de servidor fixa sysadmin têm acesso ao SQL Server Agent. Um usuário que não pertence a nenhuma dessas funções não pode usar o SQL Server Agent. Para obter mais informações sobre as funções usadas pelo SQL Server Agent, consulte Implementar o SQL Server Agent Security.

Subsistemas

Um subsistema é um objeto predefinido que representa a funcionalidade disponível para uma etapa de trabalho. Cada proxy tem acesso a um ou mais subsistemas. Os subsistemas fornecem segurança porque delimitam o acesso à funcionalidade disponível para um proxy. Cada etapa de trabalho é executada no contexto de um proxy, exceto as etapas de trabalho Transact-SQL. Transact-SQL etapas do trabalho 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 tabela a seguir:

Nome do subsistema Descrição
Microsoft ActiveX Script Executar um passo de trabalho de script ActiveX.

Aviso O subsistema ActiveX Scripting é removido do SQL Server Agent em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
Sistema operacional (CmdExec) Execute um programa executável.
PowerShell Execute uma etapa de trabalho de script do PowerShell.
Distribuidor de replicação Execute uma etapa de trabalho que ative o Distribution Agent de replicação.
Mesclagem de replicação Execute um passo de trabalho que ative o Agente de Mesclagem de replicação.
Leitor de filas de replicação Efetue uma etapa de trabalho que ative o Agente de Leitura da Fila de replicação.
Snapshot de replicação Realize uma etapa de trabalho que ative o Agente de Snapshot para replicação.
Leitor de log de transações de replicação Execute uma etapa de trabalho que ativa o Agente Leitor de Logs de replicação.
Comando do Analysis Services Execute um comando do Analysis Services.
Consulta dos Analysis Services Execute uma consulta do Analysis Services.
Execução do pacote SSIS Execute um pacote SSIS.

Observação

Como os passos de tarefa Transact-SQL não usam proxies, não existe subsistema do SQL Server Agent para os passos de tarefa Transact-SQL.

O SQL Server Agent impõe restrições de subsistema mesmo quando o principal de segurança do proxy normalmente teria permissão para executar a tarefa no passo de trabalho. Por exemplo, um proxy para um usuário que seja membro da função de servidor fixa sysadmin não pode executar uma etapa de trabalho do SSIS, a menos que o proxy tenha acesso ao subsistema SSIS, mesmo que o usuário possa 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. Os membros da função de servidor fixa do 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 logins. O proxy pode ser usado apenas para etapas de trabalho que usam um subsistema associado ao proxy. Para criar uma etapa de trabalho que utiliza um proxy específico, o proprietário do trabalho deve usar um logon associado a esse proxy ou ser membro de uma função que tenha acesso irrestrito a proxies. Os membros do sysadmin função de servidor fixa têm acesso irrestrito a proxies. Membros de SQLAgentUserRole , SQLAgentReaderRoleou SQLAgentOperatorRole só podem usar proxies aos quais lhes tenha sido concedido acesso específico. Cada usuário que é membro de qualquer uma dessas funções de banco de dados fixas do SQL Server Agent deve ter acesso a proxies específicos para que o usuário possa criar etapas de trabalho que usem esses proxies.

Automatize a administração

Use as seguintes etapas para configurar o SQL Server Agent para 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 programaticamente. Uma tarefa é um bom candidato para automação se envolver uma sequência previsível de etapas e ocorrer em um momento específico ou em resposta a um evento específico.

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

  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 do SQL Server é chamado SQLSERVERAGENT. Para instâncias nomeadas, o serviço SQL Server Agent é chamado SQLAgent$instancename.

Se você estiver executando várias instâncias do SQL Server, poderá usar a administração multisservidor para automatizar tarefas comuns a 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 SQL Server Agent. Iniciar, Parar ou Pausar o Serviço SQL Server Agent
Descreve considerações para especificar uma conta para o serviço SQL Server Agent. Selecione uma conta para o serviço 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 que você usa para criar trabalhos, alertas e operadores para 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

A partir do SQL Server 2019, você pode desabilitar o SQLPS. Na primeira linha de uma etapa de trabalho do tipo PowerShell, você pode adicionar #NOSQLPS, que impede que o SQL Agent carregue automaticamente o módulo SQLPS. Agora, seu trabalho do SQL Agent executa a versão do PowerShell instalada na máquina e, em seguida, você pode usar qualquer outro módulo do PowerShell que desejar.

Para usar o módulo SqlServer na etapa Trabalho do SQL Agent, você pode colocar esse código nas duas primeiras linhas do script.

#NOSQLPS
Import-Module -Name SqlServer