我们有一个现有的MQ自定义连接管理器,当前正由几个现有的SSIS包使用。
我想添加一个新属性并稍微修改一下代码,但如果我这样做,看起来我正在打破其他所有东西(必须重做所有这些。)
有没有办法解决这个问题,而不会破坏使用它的现有软件包?
由于
答案 0 :(得分:2)
假设您需要通过添加属性并运行它来编辑SSIS包。之后你不需要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;
}
希望这有帮助!