1

下面是我将参考的代码。几个问题:

  1. 我可以在一个“String pkgLocation =”语句中引用两个不同的 .DTSX 文件吗?(我在下面做了),如果我不能这样做,并且有超过 10 个不同的包以编程方式执行,有没有一种快速而轻松的方法来解决这个问题?

  2. 下面的代码是否代表实体框架?

  3. 我玩 SSIS 已经有一段时间了,我想知道如何具体执行它?只需按“运行”即可在测试资源管理器中显示任何内容(可能是因为它不是测试),当我尝试执行它时,我收到一条消息,指出“无法直接启动具有类库输出类型的项目”这甚至是什么意思是?

  4. 我在正确的轨道上吗?(关于以编程方式执行这些包)


public class UnitTest1
    {

        private void Execute_Package()
        {
            string pkgLocation = @"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\Customer Service Data Warehouse" +
                                 @"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\SRS DataMart SSIS\SRSDimCategorizationLoad.dtsx";
            Package pkg;
            Application app;
            DTSExecResult pkgResults;
            Variables vars;

            app = new Application();
            pkg = app.LoadPackage(pkgLocation, null);

            vars = pkg.Variables;
            vars["A_Variable"].Value = "Some value";

            pkgResults = pkg.Execute();


        }
    }

这是我在上面的代码中制作的旧代码

private static void LoadTicketLifeCycleSnapShotFact()
        {
            ExceutePackage(@"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\Customer Service Data Warehouse\SAPBPDataToStage.dtsx");

            ExceutePackage(@"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\SRS DataMart  SSIS\SRSDimCategorizationLoad.dtsx");
4

1 回答 1

2

我将创建一个包位置数组,然后枚举它们,为它们中的每一个调用 Execute 方法。

    private void Execute_Package()
    {
        string [] pkgLocations = new string[]{
            @"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\Customer Service Data Warehouse",
            @"C:\tfs\z Reports\BI Projects\Customer Service Data Warehouse\SRS DataMart SSIS\SRSDimCategorizationLoad.dtsx"};
        Package pkg;
        Application app;
        DTSExecResult pkgResults;
        Variables vars;

        app = new Application();
        foreach(string currentFile in pkgLocations)
        {
            pkg = app.LoadPackage(currentFile, null);

            // Assumes this variable exists in all of the packages
            vars = pkg.Variables;
            vars["A_Variable"].Value = "Some value";

            pkgResults = pkg.Execute();
        }
    }

要回答您提出的具体问题:

  1. 不,您不能按照您指定的方式引用它们。以上是您如何按顺序执行包。
  2. 我不知道这是否是“EF”。我假设不是
  3. 您已经创建了一个 test library。库不是可运行的东西。其他东西需要让它去(使用 Main 方法的东西)。对于测试,这将是您的测试工具 (nUnit)。或者,我会创建一个使用测试项目的控制台应用程序,以确保您正确构建了测试用例(然后创建一个测试项目来测试您的测试......)
  4. 是的,上面的代码实例化了一个包,为 SSIS 变量赋值,然后使用该新变量运行包。
于 2013-11-13T17:24:25.237 回答