Um trabalho do SQL Agent com uma etapa do Pacote do SQL Server Integration Services falha com a seguinte mensagem:
Executado como usuário: DOMAIN\SQLAGENTACCOUNT. Microsoft (R) SQL Server Execute Package Utility Versão 13.0.4259.0 para 64 bits Copyright (C) 2016 Microsoft. Todos os direitos reservados. Uma opção de relatório inválida foi especificada. Apenas E, W, I, C, D, P, V e N são permitidos. Os parâmetros da linha de comando são inválidos. A etapa falhou.
Este erro pode ocorrer se a guia Configuração na etapa do trabalho for usada para definir os parâmetros do pacote e um dos parâmetros (como senha) contiver um caractere que precisa ser delimitado, como uma aspa simples. Quando os parâmetros são modificados na caixa de diálogo da etapa de trabalho, os parâmetros são incluídos na linha de comando da etapa de trabalho e as aspas simples ou duplas não serão delimitadas. Isso resultará em uma linha de comando inválida (ou pior, errônea).
As soluções possíveis são:
Exclua a etapa de trabalho, crie uma nova etapa de trabalho e defina os parâmetros do pacote diretamente no projeto SSIS (no SSMS, em Serviços de Integração, SSISDB, Pacotes SSIS, Projetos). A linha de comando para a etapa de trabalho não tentará passar os parâmetros, mas o mecanismo de execução do pacote lerá os parâmetros diretamente e fará um trabalho melhor ao lidar com caracteres especiais.
Pode ser possível (mas não testei) incluir o delimitador de barra invertida antes do caractere especial. Então, para uma senha de My'Pa$$word, você usaria My\'Pa$$word.
Remova o caractere especial incorreto do parâmetro (por exemplo, se for uma senha, gere uma nova senha sem as aspas).
Não sei o que todos os caracteres podem causar esse problema, mas sei que as aspas simples o causarão e acho que é seguro assumir que as aspas duplas também.
Você pode ver qual comando será executado pelo SQL Agent executando a seguinte consulta:
O comando incluirá alguns
/Par
por padrão para$ServerOption::LOGGING_LEVEL
e$ServerOption::SYNCHRONIZE
, mas se algum parâmetro na etapa do trabalho foi modificado, você também os verá na linha de comando, como:Observe que para campos de senha, a senha é armazenada em sysjobsteps em texto simples, então isso definitivamente não é algo que você deseja alterar na etapa do trabalho.
Pode haver outros problemas que podem causar erros de comando inválidos, e qualquer pessoa pode editar esta resposta para adicionar outras.