Configurações do pacote SSIS 2008 sendo ignoradas

10

Com a alteração nas configurações do pacote em 2008 em comparação com 2005, quando especifico / ConfigFile something.dtsConfig na linha de comando, as variáveis ​​definidas no pacote mantêm seus valores de tempo de design em vez de usar as configurações do arquivo de configuração.

Não tenho certeza se entendi COMO obter o arquivo de configuração externo para ser usado. Eu li artigos que dizem que apenas as configurações em tempo de design definidas substituem a carga do arquivo externo. Isso significa que eu posso alterar as variáveis ​​para cadeias de caracteres em branco e elas serão substituídas? Não consigo excluir a variável completamente! E os números inteiros?

Eu vi artigos que mencionam a desativação usando configurações de pacote no pacote.

Posso usar o Editor de Pacotes SSIS ou um editor XML para alterar o caminho do arquivo de configuração no pacote e, em seguida, ele usará as configurações do arquivo "last" (independentemente da opção externa / ConfigFile), mas não quero ser mudando o pacote. Desejo um pacote com Test.dtsConfig e Production.dtsConfig e posso alternar sem alterar o pacote.

Qual é a maneira recomendada de fazer isso agora?

Cade Roux
fonte
11
Você pode encontrar seu alívio aqui , no fórum SQLServerCentral. Algumas explicações sobre a mudança de comportamento estão aqui - seção Alterações de comportamento relacionadas às configurações de pacotes.
Marian
Por favor, veja os seguintes arquivos, para ter uma idéia de quais pacotes e configurações estou falando: Configuração e lotes , Pacote de teste e Leia-me .
Marian

Respostas:

10

Você deve levar em consideração que, quando executado pelo BIDS, o pacote pegará primeiro o valor da variável do arquivo de configuração e, somente se o arquivo de configuração não existir, será emitido um aviso e o valor será retirado do pacote.

Agora, a situação na linha de comando é um pouco diferente. Você pode ter as seguintes situações:

  1. execute o pacote na linha cmd sem nenhum arquivo de configuração escolhido:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • se o arquivo de configuração original (vamos chamá-lo de Prod) não existir no mesmo caminho definido nos metadados do pacote, serão utilizados valores de dentro do pacote e você receberá um aviso de que o arquivo de configuração está ausente;
    • se o arquivo de configuração original existir e for válido, serão utilizados valores do arquivo de configuração (os valores internos serão ignorados);
  2. execute o pacote na linha cmd sem nenhum arquivo de configuração escolhido, mas com a variável definida na chamada:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • se o arquivo de configuração original não existir, o valor será obtido da chamada do pacote / SET;
    • se o arquivo de configuração original existir, o valor será obtido do arquivo de configuração e até o / SET será ignorado (isso é usado apenas no caso acima);
  3. execute o pacote na linha cmd com um novo arquivo de configuração (digamos DEV em vez Prod):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • se o novo arquivo de configuração (Dev) existir e o antigo (Prod) não existir, os valores dele serão usados;
    • se os arquivos de configuração Dev e Prod existirem, somente valores do Prod serão usados ​​(DEV será ignorado, mesmo se especificado na chamada de linha de comando);
  4. execute o pacote na linha cmd com um novo arquivo de configuração e uma instrução SET na chamada:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig" /SET \Package.Variables[checkMe];"outside the package in cmd line - DEV config"
    • se os dois arquivos de configuração existirem, o Prod será usado, todos os outros serão ignorados, até o SET;
    • se não houver arquivo de configuração, o valor SET será usado;

Então, resumindo, se você quiser usar um novo arquivo de configuração, precisará renomear / mover o antigo e chamar o pacote com / configFile. Se isso não for suficiente e quiser substituir até mesmo um novo arquivo de configuração, use a variável / SET. Ou você pode ignorar qualquer arquivo de configuração e apenas usar as instruções / SET na chamada em lote.

Espero que isso possa esclarecer suas possibilidades.

Marian
fonte
Portanto, parece que um dos grandes problemas é que meu caminho no desenvolvimento é idêntico ao do servidor durante a execução, para que o caminho para a configuração do pacote seja sempre válido.
Cade Roux
Portanto, acho que devo ter Dev, Test e Prod, ter o pacote sempre apontado para Dev e nunca ter uma configuração Dev no meu servidor, para que eu possa fazer várias configurações no servidor e poder executar diferentes configurações à vontade, desde que o A configuração do desenvolvedor no pacote nunca será encontrada. Para que eu possa depurar usando a configuração do Dev, mas terei problemas para executá-lo na linha de comando na caixa dev, porque ela encontrará essa configuração.
Cade Roux
Suponho que você concorda que isso é realmente muito mais complexo do que deveria, certo? Como se tivessem um novo pequeno recurso (o recarregamento) na mudança para 2008, mas mataram o cenário de uso mais comum das configurações de pacotes.
Cade Roux
Bem, sim, concordo que é muito mais feio do que deveria ser. Demorei muito para descobrir isso, porque sempre me esqueci de renomear o arquivo de configuração original :-). Eu gostaria que fosse mais na seguinte ordem: SET, / configFile, configuração original, valor do pacote interno. Teria feito mais sentido para mim ..
Marian
Nenhum dos artigos que li realmente menciona que é o arquivo de configuração original acessível, o que é muito do problema. Agora entendo por que eles publicaram o SSIS Package Editor para que você possa alterá-lo no pacote sem precisar abrir o BIDS.
Cade Roux