gpt4 book ai didi

c# - 如何在不破坏现有包的情况下更新现有的自定义连接管理器

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:42 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

  1. 获取 SSIS 包
  2. 通过附加 GUID 创建它的副本。所以你的包名就像 PackageName_GUID.dtsx
  3. 添加您的属性(property)。
  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;
}

关于c# - 如何在不破坏现有包的情况下更新现有的自定义连接管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16766703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com