使用C#获取SSIS包名称

时间:2017-09-05 21:09:50

标签: c# sql-server ssis

我正在通过DTUTIL在一个C#程序中将SSIS包从一个SQL服务器复制到另一个SQL服务器。这些包在MSDB中。

string dtutilCmd = "/c DTUTIL /SOURCESERVER " + sourceServer + " /SQL " + myPackage + " /DestServer " + destServer + " /COPY " + myPackage;

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = dtutilCmd;
process.StartInfo = startInfo;
process.Start();

dtutilCmd字符串中的变量都是字符串。问题是当我的用户输入包名时他们可能会出错。他们可能会编写MYPACKAGE,因此它会部署为MYPACKAGE,即使它实际上在源服务器上以MyPackage存在,我想保留它。

所以我想以某种方式获取包名称,并将其提供给我的dtutilCmd字符串的最后一部分。

2 个答案:

答案 0 :(得分:1)

您需要做的就是使用'应用程序' Microsoft.Dts.Runtime命名空间的类。然后使用它建立连接并从MSDB获取包信息。

以下链接提供了有关如何以编程方式执行此操作的更多详细信息 - Enumerating Available Packages Programmatically

答案 1 :(得分:0)

将Integration Service目录解压缩到ispac。使用SSDT打开它,然后部署到新服务器。更容易。