2

我们有一个现有的 MQ 自定义连接管理器,当前由几个现有的 SSIS 包使用。

我想添加一个新属性并稍微修改代码,但如果我这样做,看起来我正在破坏其他所有内容(必须重做所有这些。)

有没有办法可以在不破坏使用它的现有软件包的情况下解决这个问题?

谢谢

4

1 回答 1

2

假设您需要通过添加属性来编辑 SSIS 包并运行它。之后你就不需要 SSIS 包了。应将以下代码方法添加到您的应用程序并调用此方法。因此,所有更改将仅应用于新包,而无需修改另一个包。

  1. 获取 SSIS 包
  2. 通过附加 GUID 创建它的副本。所以你的包名就像 PackageName_GUID.dtsx
  3. 添加您的财产。
  4. 运行你的 SSIS 包
  5. OnSuccess 完全执行。删除 SSIS 包。

代码

    public static DtsErrors RunSSISPackage(string packagePath, string MQProperty)
    {
             * Append the auto generated GUID with the package name for running the SSIS package
             */
            string uniqueId = Guid.NewGuid().ToString();

            string uniquePackage = Path.GetDirectoryName(packagePath) + @"\" + Path.GetFileNameWithoutExtension(packagePath) + "_" + uniqueId + ".dtsx";

            File.Copy(packagePath, uniquePackage);

            Package pkg;
            Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();

            pkg = app.LoadPackage(uniquePackage, null);

            //MessageBox.Show(srcFileName);
            //MessageBox.Show(TPODBConnection);

            pkg.Connections["MQConnection"].<<YourPropertyName>> = MQProperty;

            //Uncomment this to overwrite the existing file
            //Do nothing until you are using a version control system
            //app.SaveToXml(packagePath, package, null);

            DTSExecResult result = pkg.Execute();

            if (result == DTSExecResult.Failure)
            {
                return pkg.Errors;
            }

            File.Delete(uniquePackage);

        return null;
    }

希望这可以帮助!

于 2013-05-27T11:31:35.963 回答