Como uso uma conexão de banco de dados diferente para configuração de pacote?

StackOverflow https://stackoverflow.com/questions/38766

  •  09-06-2019
  •  | 
  •  

Pergunta

Eu tenho um pacote SSIS que define alguns dados variáveis ​​de uma tabela de configuração de pacotes do SQL Server.(Selecionando a opção "Especificar configurações diretamente")

Isso funciona bem quando estou usando a conexão de banco de dados que especifiquei ao desenvolver o pacote.No entanto, quando eu o executo em um servidor (64 bits) no ambiente de teste (como um trabalho de agente ou executando o pacote diretamente) e especifico a nova cadeia de conexão nos gerenciadores de conexão, o pacote ainda lê as configurações do servidor de banco de dados que especifiquei no desenvolvimento.

Todas as outras conexões ocupam as cadeias de conexão corretas, parece apenas que a configuração do pacote é lida no lugar errado.

Alguma idéia ou estou fazendo algo realmente errado?

Foi útil?

Solução

A única maneira de fazer isso foi usando as variáveis ​​de ambiente do Windows.Você pode especificar itens como cadeias de conexão e preferências do usuário em variáveis ​​de ambiente e, em seguida, selecionar essas variáveis ​​de ambiente em sua tarefa SSIS.

Outras dicas

Prefiro usar Aliases de Servidor na Configuração do Cliente SQL.Dessa forma, quando você decidir apontar o pacote para outro SQL Server é tão simples quanto editar o alias para apontar para o novo servidor, sem necessidade de edição no pacote SSIS.Ao mover o pacote para um servidor ativo, você precisa adicionar os aliases e isso funciona.

Isso também ajuda quando você tem uma convenção de nomenclatura realmente dolorosa para servidores; o alias pode ser um nome mais descritivo do que o nome real da máquina.

Na verdade, não entendi completamente sua pergunta, mas armazeno minhas configurações de conexão em arquivos de configuração, geralmente um para cada ambiente, como desenvolvimento, produção, etc.Os pacotes leem as configurações de conexão dos arquivos de configuração quando são executados.

Ao criar um trabalho para chamar o pacote SSIS e configurar a etapa, há uma área com guias.A guia padrão é onde você define o nome do pacote, e a próxima guia é onde você pode definir o arquivo de configuração.Tenha um arquivo de configuração para cada pacote e altere para o servidor (dev, test, prod).O arquivo de configuração pode ser colocado diretamente nos servidores de desenvolvimento, teste e produção e, em seguida, apontar para eles ao configurar esse trabalho.

Se você estiver usando a configuração de pacotes do SQL Server, todas as propriedades dos pacotes virão da tabela do SQL Server - verifique se

A segurança do SSIS do jeito que está é terrível.Ninguém será capaz de apoiar as coisas quando eu estiver fora do escritório.O trabalho nunca lê o arquivo de configuração...desisto.Só funciona quando edito a string na guia Fontes de dados.No entanto, a senha será perdida se você voltar ao trabalho pela segunda vez.Design terrível, absolutamente horrível.Você poderia pensar que, ao especificar um arquivo xml na etapa do trabalho, ele leria a cadeia de conexão definida a partir daí, mas isso não acontece.Isso realmente funciona para mais alguém?

Vá para as propriedades do pacote e defina a implantação como True.Isso deve funcionar para o que você fez.

Eu tive a mesma pergunta e obtive a mesma resposta, ou seja,você não pode editar a cadeia de conexão usada para configurações de pacote hospedadas no SQL Server, exceto se especificar que a cadeia de conexão do SQL Server deve estar em uma variável de ambiente.

Infelizmente, isso não funciona na minha configuração de desenvolvimento, onde dois ambientes estão hospedados na mesma máquina.Acabei seguindo a abordagem de Scott Coleman conforme detalhado em Central do SQL Server [Inscrição gratuita e um bom site].O truque é criar uma visualização para armazenar suas definições de configuração em um servidor central e, em seguida, usar a máquina que se conecta a ela para determinar qual ambiente está ativo.

Usei essa abordagem, mas também usei o usuário conectado ao ambiente para fazer uma determinação, porque minhas configurações de teste e desenvolvimento são executadas na mesma instância do SSIS, mas como nomes de usuário diferentes.Scott sugere nos comentários que o nome do aplicativo deve ser definido, mas isso não pode ser alterado na etapa do trabalho de execução do pacote, portanto não era uma opção.

Uma outra ressalva que descobri foi que tive que adicionar gatilhos "Em vez de" à minha visualização para fazer inserções, atualizações e exclusões de variáveis ​​de configuração.

Queremos manter as configurações de nossos pacotes em uma tabela de banco de dados, sabemos que é feito backup deles com nossos outros dados e sabemos onde encontrá-los.Apenas uma preferência.

Descobri que, para fazer isso funcionar, posso usar uma configuração de variável de ambiente para definir a cadeia de conexão do gerenciador de conexões do qual estou lendo a configuração do meu pacote.(Embora eu tenha que reiniciar o agente SQL Server antes que ele pudesse encontrar a nova variável de ambiente.Não é o ideal quando eu implanto isso na produção)

Parece que quando você executa um pacote SSIS como uma etapa de uma tarefa agendada, ele funciona nesta ordem:

  • Carregue cada uma das configurações de pacote na ordem em que aparecem no organizador de configurações de pacote
  • Defina as cadeias de conexão na guia Fontes de dados nas propriedades da etapa do trabalho agendado
  • Comece a executar o pacote.

Eu esperava que os dois primeiros fossem o contrário, para que eu pudesse definir a fonte de dados para a configuração do meu pacote a partir do trabalho agendado.É aí que eu esperaria que outras pessoas procurassem ao manter o pacote.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top