我有一个要求,我必须读取SSIS包的连接字符串值,而无需通过Visual Studio打开它。
最近我们遇到了一个问题,SSIS包中硬编码的连接字符串没有反映在配置文件中。因此,我们计划使用一个实用程序从包中获取连接字符串,并将其与配置文件进行比较。
但是我找不到直接从SSIS包中获取连接字符串的方法。
答案 0 :(得分:0)
此方法要求您在计算机上安装Integration Services组件。实例化Application和Package对象,枚举包的Connections集合中的所有值。从那里,检查ConnectionString对象。
此方法不考虑表达式或配置。
using Microsoft.SqlServer.Dts;
public static void FindConnections()
{
string fileName = string.Empty;
Package package = null;
Application app = null;
fileName = @"C:\sandbox\SSISHackAndSlash2008\SSISHackAndSlash2008\MyPackage.dtsx";
package = new Package();
app = new Application();
app.LoadPackage(fileName, null);
Connections packageConnections = package.Connections;
// code approximate
foreach(Connection conn in packageConnections)
{
Console.Writeline(conn.ConnectionString);
}
}