Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro de conexão SSIS - nome do arquivo inválido


Com base nas informações apresentadas, você está fazendo tudo certo. Se você é novo no SSIS, uma coisa que eu sugiro é que você obtenha uma cópia do excelente suplemento BIDSHajudante . Possui ótimos recursos que podem realmente economizar seu tempo, especialmente no que diz respeito a configurações e expressões.

Criei um pacote de referência que tinha um Gerenciador de conexões do Excel apontando para C:\ssisdata\so_paulsmithjr.xls e ligou tudo.



Neste ponto, eu sei que as coisas estão funcionando, então era hora de fazer o pacote se mover. Criei as seguintes variáveis ​​e seus valores
  • CurrentFile - C:\ssisdata\so_paulsmithjr.xls
  • PlaceHolder - ##FILE_PATH##
  • TemplateConnection - Provider=Microsoft.Jet.OLEDB.4.0;Data Source=##FILE_PATH##;Extended Properties="Excel 8.0;HDR=YES";

Uma quarta variável é definida para ser uma expressão (clique com o botão direito na variável, janela de propriedades. Defina Avaliar como Expressão =Verdadeiro e Expressão está abaixo)
  • CurrentConnection - REPLACE(@[User::TemplateConnection], @[User::PlaceHolder], @[User::CurrentFile])

Eu comparei o valor CurrentConnection ao ReferenceConnection (que é o valor original da cadeia de conexão do Excel Connection Manager) e as coisas foram uma correspondência. Neste ponto, se eu alterasse o valor de CurrentFile para C:\ssisdata\so_paulsmithjr - Copy.xls, isso seria automaticamente refletido no valor de CurrentConnection.

O truque final seria usar uma expressão no Gerenciador de conexões do Excel. Novamente, clique com o botão direito do mouse no CM e em Propriedades, haverá Expressões. Ele não se expandirá, pois não há nada sob ele. Em vez disso, clique nas reticências e selecione a propriedade ConnectionString e selecione as reticências novamente e desta vez arraste o @[User::CurrentFile] variável. Clique em OK x2 e agora seu gerenciador de conexões está configurado para ser usado sempre que a variável CurrentConnection especificar.

Isso funciona melhor?