我有一个要求,我必须读取 SSIS 包的连接字符串值,而无需通过 Visual Studio 打开它。
最近我们遇到了一个问题,比如硬编码在 SSIS 包中的连接字符串没有反映在配置文件中。所以我们计划有一个实用程序来从包中获取连接字符串并将其与配置文件进行比较。
但我找不到直接从 SSIS 包中获取连接字符串的方法。
我有一个要求,我必须读取 SSIS 包的连接字符串值,而无需通过 Visual Studio 打开它。
最近我们遇到了一个问题,比如硬编码在 SSIS 包中的连接字符串没有反映在配置文件中。所以我们计划有一个实用程序来从包中获取连接字符串并将其与配置文件进行比较。
但我找不到直接从 SSIS 包中获取连接字符串的方法。
此方法要求您在计算机上安装 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);
}
}