为相当冗长的标题道歉,但这似乎是描述我遇到的问题的最简短方式。
我正在尝试用 C# 编写一个程序来生成 SSIS 包。我确实有可以用作模板的现有包,并且在现有包中,有一些变量使用其他变量,这些变量使用环境变量填充。例如,有一个名为“RootFolder”的变量,它是使用环境变量设置的,为包建立一个工作文件夹。包中还有另一个名为“OutputFolder”的变量,它采用 RootFolder 变量的值并附加字符串“\Output”。很简单,原始开发人员使用 BIDS Helper 为 OutputFolder 设置以下表达式:@[Template::RootFolder] + "\Output\"
我在 C# 中构建它时遇到了一些问题,因为在创建变量之前似乎没有设置环境变量,因此子变量似乎只有附加数据。使用上面的示例,我的“OutputFolder”变量等于“\OutPut\”。
这是我用来将配置设置为指向环境变量并从 RootFolder 堆叠变量的代码片段。
pkg.Variables.Add("FolderRoot", false, "Template", "");
Configuration configRootFolder = pkg.Configurations.Add();
configRootFolder.Name = @"RootFolder";
configRootFolder.ConfigurationType = Microsoft.SqlServer.Dts.Runtime.DTSConfigurationType.EnvVariable;
configRootFolder.ConfigurationString = @"Ssis_RootFolder";
configRootFolder.PackagePath = "\\Package.Variables[Template::FolderRoot].Properties[Value]";
pkg.Variables.Add("OutputFolder", false, "Template", pkg.Variables["Template::FolderRoot"].Value + "\\Output\\");
任何帮助将不胜感激。提前致谢!富有的
编辑:对不起,我意识到我错过了一个重要的细节:
- 使用程序创建包后,RootFolder 变量正在调用环境变量并被正确设置,并且在 Visual Studio 中可见。