簡體   English   中英

SSIS Package 腳本任務運行失敗

[英]SSIS Package Fails To Run With Script Task

我有一個控制台應用程序試圖運行 SSIS package(在 Package 部署模式下)。 控制台應用程序和 SSIS package 都位於我的 C: 驅動器上。 只要調用的 package 不包含腳本任務,代碼就可以工作。 當被調用的 package 包含一個腳本任務時,我得到這個錯誤:

Package 執行結果:任務加載失敗。 此任務的聯系信息是“”。
Package 執行結果:任務驗證時出錯。
Package 執行結果: package 無法執行,因為它包含加載失敗的任務。

我已經嘗試從 SSDT 運行名為 package 並且它運行成功。 但是當從下面的代碼運行時,它失敗了。 根據類似帖子的回答,我嘗試更改調用的 package 的 TargetServerVersion 屬性。但仍然出現相同的錯誤。 控制台應用程序和調用的腳本任務都使用 .NET Framework 4.7.2 作為目標框架。

知道什么可能是錯的嗎?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.SqlServer.Dts.Runtime;

namespace PackageTester
{
    class Program
    {
        static void Main(string[] args)
        {
            string SSISPackagePath = @"C:\-------\console_app_test_2.dtsx";
            string datafilePath = @"C:\-------\datafiles\my_data_file.csv";

            string results = FireSSIS(SSISPackagePath, datafilePath);

            Console.WriteLine(results);
            Console.ReadLine();
        }

        public static string FireSSIS(string packagePath, string FilePath)  
        {
            string result = string.Empty;
            try
            {
                Application app = new Application();
                Package package = null;

                package = app.LoadPackage(packagePath, null);

                Variables myVars = package.Variables;

                myVars["SourceFilePath"].Value = FilePath;

                DTSExecResult results = package.Execute(null, myVars, null, null, null);

                if (results == DTSExecResult.Success)
                {
                    result = "Success";
                }
                else
                {
                    foreach (DtsError local_DtsError in package.Errors)
                    {
                        result += string.Concat($"Package Execution results: { local_DtsError.Description }\r\n");
                    }
                }                
            }

            catch (DtsException ex)
            {
                Console.WriteLine (ex.Message);
            }

            return result;
        }
        
    }
}

這是一個已知的限制。 任何帶有腳本任務的 package 將無法在“正確”的集成服務安裝之外運行。 據我所知,這是一個許可問題。 可能還有其他限制。

暫無
暫無

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

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