Pacote do SSIS não é executado quando chamado a partir de uma etapa de trabalho do agente de SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 918760 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você chamar um pacote Microsoft SQL Server 2005 Integration Services (SSIS) de uma etapa de trabalho do agente de SQL Server, o pacote do SSIS não é executado. No entanto, se você não modificar o pacote do SSIS, ele será executado com êxito fora SQL Server agente.

Resolução

Para resolver esse problema, use um dos seguintes métodos. O método mais apropriado depende do ambiente e o motivo pelo qual o pacote falhou. Motivos pelos quais o pacote pode ter falhado são:
  • A conta de usuário usada para executar o pacote de SQL Server Agent difere do autor original do pacote.
  • A conta de usuário não tem as permissões necessárias para fazer conexões ou para acessar recursos fora do pacote do SSIS.
O pacote pode não ser executado nas seguintes situações:
  • O usuário atual não pode descriptografar segredos do pacote. Essa situação pode ocorrer se a conta atual ou a conta de execução difere do autor original do pacote e configuração da propriedade ProtectionLevel de pacote não permite que o usuário atual descriptografar segredos no pacote.
  • Uma conexão de SQL Server que usa segurança integrada falha porque o usuário atual não tem as permissões necessárias.
  • Acesso ao arquivo falhará porque o usuário atual não tem as permissões necessárias para gravar no compartilhamento de arquivo que acessa o Gerenciador de conexão. Por exemplo, essa situação pode ocorrer com provedores de log de texto que não usam um login e uma senha. Este cenário também pode ocorrer com qualquer tarefa que depende do Gerenciador de conexão do arquivo, como uma tarefa de sistema de arquivo SSIS.
  • Uma configuração de pacote do SSIS baseadas no registro usa as chaves de Registro HKEY_CURRENT_USER. As chaves de Registro HKEY_CURRENT_USER são específicas do usuário.
  • Uma tarefa ou um Gerenciador de conexões requer que a conta de usuário atual tem permissões corretas.
Método 1: Usar uma conta de proxy do agente do SQL Server

Método 2: Definir a propriedade SSIS pacote ProtectionLevel para ServerStorage

Método 3: Definir a propriedade SSIS pacote ProtectionLevel para EncryptSensitiveWithPassword

Método 4: Arquivos de configuração usar o pacote do SSIS

Método 5: Criar um modelo de pacote

Situação

Esse comportamento é por design.

Informações avançadas

Etapas para reproduzir o problema

  1. Faça login como um usuário que não faz parte do grupo SQLServer2005SQLAgentUser. Por exemplo, você pode criar um usuário local.
  2. Criar um pacote do SSIS e adicione uma tarefa ExecuteSQL. Use um Gerenciador de conexão OLE DB para o arquivo msdb local usando a seguinte seqüência: Autenticação do Windows -SQLSourceType: "Entrada direta" -SQLStatement: "sp_who"
  3. Execute o pacote para certificar-se de que ele seja executado com êxito.
  4. Observe que a propriedade ProtectionLevel é definida como EncryptSensitiveWithPassword.
  5. Crie um trabalho de agente de SQL Server e uma etapa de trabalho. No Executar como Clique em Serviço de agente de SQL Server para executar a etapa do trabalho.
O texto no histórico de trabalho do agente SQL Server exibe informações semelhante à seguinte:

Executado como usuário: domínio. Falha na execução de pacote. A etapa falhou.

Descriptografar os segredos do pacote

A configuração padrão para a propriedade ProtectionLevel de pacote do SSIS é EncryptSensitiveWithUserKey. Quando o pacote é salvo, o SSIS criptografa apenas as partes do pacote que contêm propriedades marcadas como "confidenciais", como senhas, nomes de usuário e seqüências de conexão. Portanto, quando o pacote é recarregado, o usuário atual deve satisfazer os requisitos de criptografia para as propriedades confidenciais sejam descriptografados. No entanto, o usuário atual não tem que satisfazer os requisitos de criptografia para carregar o pacote. Quando você executa o pacote através de uma etapa de trabalho do agente de SQL Server, a conta padrão é a conta de serviço do agente SQL Server. Essa conta padrão provavelmente é um usuário diferente do autor do pacote. Portanto, a etapa de trabalho SQL Server agente pode carregar e iniciar a execução da etapa de trabalho, mas o pacote falha porque ele não pode concluir uma conexão. Por exemplo, o pacote não pode concluir uma conexão OLE DB ou uma conexão FTP. O pacote falha porque ele não pode descriptografar as credenciais para se conectar.

Importante Considere o processo de desenvolvimento e o ambiente para determinar quais contas são necessárias e usadas em cada computador. A configuração EncryptSensitiveWithUserKey da propriedade ProtectionLevel é uma configuração poderosa. Essa configuração não deve ser desconsiderada porque faz complicações implantação primeiro. Você pode criptografar os pacotes quando estiver conectado à conta apropriada. Você também pode usar o utilitário de prompt de comando do SSIS Dtutil.exe para alterar os níveis de proteção usando um arquivo. cmd e o subsistema de comando do agente de SQL Server. Por exemplo, siga estas etapas. Porque você pode usar o utilitário Dtutil.exe arquivos em lotes e loops, você pode seguir estas etapas para vários pacotes ao mesmo tempo.
  1. Modificar o pacote que você deseja criptografar usando uma senha.
  2. Use o utilitário Dtutil.exe através de um Sistema operacional (cmd Exec) Etapa do trabalho de agente de SQL Server para alterar a propriedade ProtectionLevel para EncryptSensitiveWithUserKey. Este processo envolve descriptografar o pacote usando a senha e então recriptografá-lo do pacote. A chave de usuário é usada para criptografar o pacote é a etapa do trabalho de agente de SQL Server configuração naExecutar como lista.

    Observação Porque a chave inclui o nome de usuário e o nome do computador, o efeito de mover os pacotes para outro computador pode ser limitado.

Certifique-se de que você tenha erro informações detalhadas sobre a falha de pacote SSIS

Em vez de depender detalhes limitados no histórico de trabalho do agente SQL Server, você pode usar o SSIS log para verificar se você tem informações de erro sobre a falha de pacote SSIS. Você também pode executar o pacote usando o comando de subsistema exec em vez do comando de subsistema SSIS.

Sobre o log do SSIS

Provedores de log e log do SSIS permitem capturar detalhes sobre a execução do pacote e falhas. Por padrão, o pacote não registra as informações. Você deve configurar o pacote para registrar informações. Quando você configura o pacote para registrar informações, semelhante à seguinte são exibidas informações detalhadas. Nesse caso, você saberá que é um problema de permissões:

OnError, DOMAINNAME, nome_de_domínio \ nome_de_usuário, FTP Task,{C73DE41C-D0A6-450A-BB94-DF6D913797A1},{2F0AF5AF-2FFD-4928-88EE-1B58EB431D74},4/28/2006 1: 51: 59 PM, 28/4/2006 1: 51: 59 PM,-1073573489, 0 x, não é possível conectar ao servidor FTP usando o "Gerenciador de conexão de FTP".

OnError DOMAINNAME, nome_de_domínio \ nome_de_usuário, Execute SQL Task,{C6C7286D-57D4-4490-B12D-AC9867AE5762},{F5761A49-F2F9-4575-9E2B-B3D381D6E1F3},4/28/2006 4: 07: 00 PM, 28/4/2006 4: 07: 00 PM,-1073573396, 0 x, falha ao obter conexão "user01.msdb". Conexão pode não estar configurado corretamente ou talvez você não tenha as permissões corretas nesta conexão.

Sobre o comando de subsistema exec e informações de saída

Usando a abordagem de comando de subsistema exec, você pode adicionar console verbose log switches de linha de comando SSIS para chamar o arquivo executável de linha de comando do SSIS Dtexec.exe. Além disso, você pode usar o recurso avançado de trabalho do arquivo de saída. Você também pode usar o Incluir a saída da etapa no histórico opção para redirecionar as informações de log para um arquivo ou histórico de trabalho do agente do SQL Server.

Este é um exemplo de uma linha de comando:

dtexec.exe /FILE 
"C:\_work\SSISPackages\ProtectionLevelTest\ProtectionLevelTest\AgentTesting.dtsx" /MAXCONCURRENT " -1 
" /CHECKPOINTING OFF  /REPORTING V  /CONSOLELOG NCOSGXMT


O log /console retorna detalhes semelhantes aos seguintes:

Error: 2006-04-27 18:13:34.76
   Code: 0xC0202009
   Source: AgentTesting Connection manager "(local).msdb"
   Description: An OLE DB error has occurred. Error code: 0x80040E4D.
An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80040E4D  Description: "Login failed for user 'DOMAINNAME\username'.".
End Error


Error: 2006-04-28 13:51:59.19
   Code: 0xC0016016
   Source:  
   Description: Failed to decrypt protected XML node "DTS:Property" with error 0x80070002 "The system cannot find the file specified.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available.
End Error


Log:
     Name: OnError
     Computer: COMPUTERNAME
     Operator: DOMAINNAME\username
     Source Name: Execute SQL Task
     Source GUID: {C6C7286D-57D4-4490-B12D-AC9867AE5762}
     Execution GUID: {7AFE3D9E-5F73-42F0-86FE-5EFE264119C8}
     Message: Failed to acquire connection "(local).msdb". Connection may not be configured correctly or you may not have the right permissions on this connection.
     Start Time: 2006-04-27 18:13:34
     End Time: 2006-04-27 18:13:34
End Log

Referências

Para obter mais informações sobre um problema semelhante, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
904800Você recebe uma mensagem de erro "Erro ao carregar" quando tenta executar um pacote SQL Server 2005 Integration Services no SQL Server 2005
Para obter mais informações sobre como usar o utilitário Dtutil.exe em operações em lotes, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
906562Como usar o utilitário dtutil (Dtutil.exe) para definir o nível de proteção de um lote de pacotes do Integration Services (SSIS) SQL Server no SQL Server 2005
Para obter mais informações sobre como criar modelos de pacote, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
908018Como criar um modelo de pacote no SQL Server Business Intelligence Development Studio


Para obter mais informações sobre segurança de pacote do SSIS e a propriedade ProtectionLevel , consulte o tópico "Considerações de integração serviços de segurança" nos Manuais Online do SQL Server 2005.

Infelizmente, os usuários não estão cientes de que configurações de etapa do trabalho de agente padrão colocam nesse estado. Para obter mais informações sobre proxies SQL Server Agent e o SSIS, consulte os seguintes tópicos nos Manuais Online do SQL Server 2005:
  • Agendando a execução do pacote SQL Server Agent
  • Criando proxies SQL Server agente

Propriedades

ID do artigo: 918760 - Última revisão: terça-feira, 16 de julho de 2013 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2008 Service Pack 1
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2005 Service Pack 3
  • Microsoft SQL Server 2005 Service Pack 2
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
Palavras-chave: 
kbsqlsetup kbprb kbsql2005ssis kbsql2005setup kbexpertiseinter kbexpertiseadvanced kbtshoot kbmt KB918760 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.
Clique aqui para ver a versão em Inglês deste artigo: 918760

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com