Criando etapas de trabalho

Uma etapa de trabalho é uma ação que o trabalho realiza em um banco de dados ou servidor. Todo trabalho deve ter, pelo menos, uma etapa de trabalho. As etapas de trabalho podem ser:

  • Programas executáveis e comandos de sistema operacional.

  • Instruções Transact-SQL, inclusive procedimentos armazenados e procedimentos armazenados estendidos.

  • Scripts PowerShell.

  • MicrosoftScripts ActiveX.

  • Tarefas de replicação.

  • Tarefas do Analysis Services.

  • Pacotes do Integration Services.

Toda etapa de trabalho é executada em um contexto de segurança específico. Se a etapa de trabalho especificar um proxy, será executada no contexto de segurança da credencial para aquele proxy. Se a etapa de trabalho não especificar um proxy, ela será executada no contexto de segurança da conta de serviço do SQL Server Agent. Apenas membros da função de servidor fixa sysadmin podem criar trabalhos que não especifiquem um proxy explicitamente.

Como as etapas de trabalho são executadas no contexto de um usuário específico do Microsoft Windows, esse usuário deve ter as permissões e a configuração necessárias para a execução da etapa de trabalho. Por exemplo, se você criar um trabalho que requeira uma letra de unidade ou um caminho UNC (convenção de nomenclatura universal), as etapas do trabalho poderão ser executadas em sua conta de usuário do Microsoft Windows durante o teste das tarefas. Porém, o usuário Windows da etapa de trabalho também deve ter as permissões necessárias, as configurações de letra de unidade ou o acesso à unidade necessária. Caso contrário, a etapa de trabalho falhará. Para evitar esse problema, assegure que o proxy de cada etapa de trabalho tenha as permissões necessárias para a tarefa executada pela etapa. Para obter mais informações, consulte Segurança e proteção (Mecanismo de Banco de Dados).

Logs de etapas de trabalho

O SQL Server Agent pode gravar a saída de algumas etapas de trabalho em um arquivo do sistema operacional ou na tabela sysjobstepslogs do banco de dados msdb. Os seguintes tipos de etapa de trabalho podem gravar a saída em ambos os destinos:

  • Programas executáveis e comandos de sistema operacional.

  • Instruções Transact-SQL.

  • Tarefas do Analysis Services.

Apenas etapas de trabalho executadas por usuários membros da função de servidor fixa sysadmin podem gravar a saída de etapas de trabalho em arquivos do sistema operacional. Se as etapas de trabalho forem executadas por usuários que são membros das funções de banco de dados fixas SQLAgentUserRole, SQLAgentReaderRole ou SQLAgentOperatorRole no banco de dados msdb, a saída dessas etapas só poderá ser gravada na tabela sysjobstepslogs.

Os logs de etapas de trabalho são eliminados automaticamente na exclusão de trabalhos ou de etapas de trabalho.

ObservaçãoObservação

O registro de tarefas de replicação e de etapas de trabalho de pacotes do Integration Services é manipulado por seus respectivos subsistemas. Não é possível usar o SQL Server Agent para configurar o registro desses tipos de etapa de trabalho.

Programas executáveis e comandos do sistema operacional como etapas de trabalho

Programas executáveis e comandos de sistema operacional podem ser usados como etapas de trabalho. Esses arquivos podem ter as extensões .bat, .cmd, .com ou .exe.

Ao usar um programa executável ou um comando de sistema operacional como etapa de trabalho, é necessário especificar:

  • O código de saída do processo retornado, se o comando teve êxito.

  • O comando a ser executado. Para executar um comando de sistema operacional, trata-se do próprio comando. No caso de um programa externo, é o nome do programa e os argumentos para o programa; por exemplo: C:\Arquivos de Programas\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -e -q "sp_who"

    ObservaçãoObservação

    É necessário fornecer o caminho completo para o executável, caso este não esteja localizado em um diretório especificado no caminho de sistema ou no caminho para o usuário em cujo nome a etapa de trabalho é executada.

Para criar uma etapa de trabalho com um programa executável

Para redefinir permissões do SQL Server Agent

Etapas de trabalho do Transact-SQL

Ao criar uma etapa de trabalho Transact-SQL, você deve:

  • Identificar o banco de dados no qual executar o trabalho.

  • Digitar a instrução Transact-SQL a executar. A instrução pode chamar um procedimento armazenado ou um procedimento armazenado estendido.

Opcionalmente, você pode abrir um arquivo Transact-SQL existente na forma de um comando para a etapa de trabalho.

Etapas de trabalho Transact-SQL não usam proxies do SQL Server Agent. Em vez disso, a etapa de trabalho é executada como o seu proprietário ou como a conta de serviço do SQL Server Agent, caso o proprietário da etapa de trabalho seja membro da função de servidor fixa sysadmin. Os membros da função de servidor fixa sysadmin também podem especificar que as etapas de trabalho Transact-SQL sejam executadas sob o contexto de outro usuário através do parâmetro database_user_name do procedimento armazenado sp_add_jobstep. Para obter mais informações, consulte sp_add_jobstep (Transact-SQL).

ObservaçãoObservação

Uma mesma etapa de trabalho Transact-SQL pode conter vários lotes. Etapas de trabalho Transact-SQL podem conter comandos GO incorporados.

Para criar uma etapa de trabalho do Transact-SQL

Para definir opções de etapas de trabalho do Transact-SQL

Etapas de trabalho de scripts PowerShell

Ao criar uma etapa de trabalho de script PowerShell, é necessário especificar uma das duas opções a seguir como comando da etapa:

  • O texto de um script PowerShell.

  • Um arquivo de script PowerShell existente a ser aberto.

O subsistema PowerShell do SQL Server Agent abre uma sessão do PowerShell e carrega os snap-ins de PowerShell do SQL Server. O script PowerShell usado como o comando de etapa de trabalho pode fazer referência ao provedor de PowerShell do SQL Server e cmdlets. Para obter mais informações sobre como escrever scripts PowerShell usando os snap-ins de PowerShell do SQL Server, consulte Visão geral do SQL Server PowerShell.

Etapas de trabalho de scripts ActiveX

Observação importanteImportante

A etapa de trabalho de script ActiveX será removida do SQL Server Agent em uma futura versão do Microsoft SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar os aplicativos que atualmente o utilizam.

Ao criar uma etapa de trabalho de scripts ActiveX, você deve:

  • Identificar a linguagem de script na qual a etapa de trabalho é gravada.

  • Gravar o script ActiveX.

Você também pode abrir um arquivo de script ActiveX existente na forma de um comando para a etapa de trabalho. Alternativamente, os comandos de script ActiveX podem ser compilados externamente (por exemplo, por meio do Microsoft Visual Basic) e executados como programas executáveis.

Quando um comando de etapa de trabalho é um script ActiveX, é possível usar o objeto SQLActiveScriptHost para imprimir a saída em um log de histórico de etapas de trabalho ou criar objetos COM. SQLActiveScriptHost é um objeto global introduzido pelo sistema host do SQL Server Agent no namespace de script. O objeto tem dois métodos (Print e CreateObject). O exemplo a seguir mostra como a criação de scripts do ActiveX funciona no Visual Basic Scripting Edition (VBScript).

' VBScript example for ActiveX Scripting job step
' Create a Dmo.Server object. The object connects to the
' server on which the script is running.

Set oServer = CreateObject("SQLDmo.SqlServer")
oServer.LoginSecure = True
oServer.Connect "(local)"
'Disconnect and destroy the server object
oServer.DisConnect
Set oServer = nothing

O exemplo a seguir mostra a mesma tarefa em JScript:

// JScript example for ActiveX Scripting job step
// Create a Dmo.Server object. The object connects to the
// server on which the script is running.

var oServer = CreateObject("SQLDmo.SqlServer");
oServer.LoginSecure = true;
oServer.Connect("(local)");

//Disconnect and destroy the server object
oServer.DisConnect();
oServer.Close(); 

Para criar uma etapa de trabalho de script do ActiveX

Etapas de trabalho de replicação

Quando você cria publicações e assinaturas que usam replicação, são criados trabalhos de replicação por padrão. O tipo de trabalho criado é determinado pelo tipo de replicação (de instantâneo, transacional ou de mesclagem) e pelas opções usadas.

Etapas de trabalho de replicação ativam um destes agentes de replicação:

  • Snapshot Agent (trabalho Snapshot)

  • Log Reader Agent (trabalho LogReader)

  • Distribution Agent (trabalho Distribution)

  • Merge Agent (trabalho Merge)

  • Queue Reader Agent (trabalho QueueReader)

Quando a replicação está configurada, é possível especificar a execução de agentes de replicação de três formas: continuamente, depois que o SQL Server Agent é iniciado; sob demanda; ou de acordo com a agenda. Para obter mais informações sobre os agentes de replicações, consulte Visão geral dos agentes de replicação..

Etapas de trabalho do Analysis Services

O SQL Server Agent oferece suporte a dois tipos distintos de etapas de trabalho do Analysis Services, etapas de trabalho de comando e de consulta.

Etapas de trabalho de comando do Analysis Services

Ao criar uma etapa de trabalho de comando do Analysis Services, é necessário:

  • Identificar o servidor OLAP do banco de dados no qual a etapa de trabalho será executada.

  • Digitar a instrução a ser executada. A instrução deve ser um XML para o método Execute do Analysis Services. A instrução talvez não tenha um envelope de SOAP completo ou um XML para o método Discover do Analysis Services. Observe que, embora o SQL Server Management Studio ofereça suporte a envelopes de SOAP completos e ao método Discover, as etapas de trabalho do SQL Server Agent não oferecem.

Para obter mais informações sobre XML para Analysis Services, consulte Visão geral do XML for Analysis (XMLA).

Etapas de trabalho de consulta do Analysis Services

Ao criar uma etapa de trabalho de consulta do Analysis Services, é necessário:

  • Identificar o servidor OLAP do banco de dados no qual a etapa de trabalho será executada.

  • Digitar a instrução a ser executada. A instrução deve ser uma consulta de linguagem MDX.

Para obter mais informações sobre MDX, consulte Conceitos básicos de consulta MDX.

Pacotes do Integration Services

Ao criar uma etapa de trabalho de pacote do Integration Services, é necessário fazer o seguinte:

  • Identificar a origem do pacote.

  • Identificar o local do pacote.

  • Se arquivos de configuração forem necessários para o pacote, identificar os arquivos de configuração.

  • Se arquivos de comando forem necessários para o pacote, identificar os arquivos de comando.

  • Identificar a verificação a ser usada para o pacote. Por exemplo, você pode especificar que o pacote deve estar assinado ou ter um ID de pacote específico.

  • Identificar as fontes de dados do pacote.

  • Identificar os provedores de log do pacote.

  • Especificar variáveis e valores a serem definidos antes da execução do pacote.

  • Identificar opções de execução.

  • Adicionar ou modificar opções de linha de comando.

Para obter mais informações sobre como criar etapas de trabalho que executam pacotes do Integration Services, consulte Como executar um pacote.