繁体   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