【问题标题】:Executing SSIS package programmatically以编程方式执行 SSIS 包
【发布时间】:2013-11-13 16:41:47
【问题描述】:

下面是我将要引用的代码。几个问题:

  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");

【问题讨论】:

  • 您的包是使用项目部署模型构建的吗?这是 2012 年的新功能
  • 我完全忘记了如何以编程方式执行 SSIS 包...

标签: c# visual-studio-2012 ssis package


【解决方案1】:

我将创建一个包位置数组,然后枚举它们,为它们中的每一个调用 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. 您已经创建了一个测试library。库不是可运行的东西。其他东西需要让它去(使用 Main 方法的东西)。对于测试,这将是您的测试工具 (nUnit)。或者,我会创建一个使用测试项目的控制台应用程序,以确保您正确构建了测试用例(然后您创建一个测试项目来测试您的测试......)
  4. 是的,上面的代码实例化了一个包,为 SSIS 变量赋值,然后使用该新变量运行包。

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    相关资源
    最近更新 更多