Въз основа на представената информация, вие правите всичко правилно. Ако сте нов в SSIS, едно нещо, което бих предложил, е да получите копие на отличната добавка BIDSHelper . Има страхотни функции, които наистина могат да ви спестят време, особено по отношение на конфигурации и изрази.
Създадох референтен пакет, който имаше Excel Connection Manager, сочещ към C:\ssisdata\so_paulsmithjr.xls
и окабелих всичко.
На този етап знам, че нещата работят, така че беше време пакетът да се премести. Създадох следните променливи и техните стойности
- CurrentFile - C:\ssisdata\so_paulsmithjr.xls
- Поставител - ##FILE_PATH##
- TemplateConnection -
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=##FILE_PATH##;Extended Properties="Excel 8.0;HDR=YES";
Четвърта променлива е зададена да бъде израз (Щракнете с десния бутон върху променлива, прозорец със свойства. Задайте Оценка като израз =True &изразът е по-долу)
- CurrentConnection -
REPLACE(@[User::TemplateConnection], @[User::PlaceHolder], @[User::CurrentFile])
Сравних стойността CurrentConnection с ReferenceConnection (която е оригиналната стойност на низа за връзка на Excel Connection Manager) и нещата съвпадаха. В този момент, ако трябваше да променя стойността на CurrentFile на C:\ssisdata\so_paulsmithjr - Copy.xls, това автоматично ще бъде отразено в стойността на CurrentConnection.
Последният трик би бил да използвате израз в Excel Connection Manager. Отново щракнете с десния бутон върху CM и под Properties ще има Expressions. Няма да се разшири, тъй като няма нищо под него. Вместо това щракнете върху елипсите и след това изберете свойството ConnectionString и изберете елипсите отново и този път плъзнете надолу @[User::CurrentFile]
променлива. Щракнете върху OK x2 и сега вашият мениджър на връзки е настроен да използва където променливата CurrentConnection посочи.
Това работи ли по-добре?