簡體   English   中英

以編程方式執行SSIS程序包

[英]Executing SSIS package programmatically

下面是我將要參考的代碼。 幾個問題:

  1. 我可以在一個“ String pkgLocation =”語句中引用兩個不同的.DTSX文件嗎? (我在下面做了),如果我做不到,並且有十多個不同的程序包要以編程方式執行,那么有沒有一種快速而輕松的方法來解決這個問題?

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

我將創建一個包含程序包位置的數組,然后通過它們枚舉為它們中的每個調用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變量分配了一個值,然后使用該新變量運行程序包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM