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?