我目前正在使用C#控制台应用程序,我想执行属于SSIS项目的某些SSIS包。
这里的问题是SSIS包中的一些连接管理器是在项目级别而一些是在包级别上。
控制台应用
Package pkg;
Application app;
DTSExecResult pkgResults;
app = new Application();
pkg = app.LoadPackage(pkgLocation, null);
PrintPackageInfo(pkg);
pkgResults = pkg.Execute();
PrintOutput(pkgResults, pkg);
错误输出:
The connection <connectionid> is not found. This error is thrown by Connection collection when the specific connection element is not found.
但是当我循环遍历Connections
pkg
对象时,就像这样
foreach(ConnectionManager con in pkg.Connections)
{
Console.WriteLine("\t Connection Manager {0}", con.Name);
Console.WriteLine("\t Connection String {0}", con.ConnectionString);
}
它输出包级别连接管理器,但不输出项目级别的连接管理器。
答案 0 :(得分:1)
如果您正在使用项目级别连接,那么我假设您有可用的ispac文件。如果是这样,您可以使用Project类使用其中一个OpenProject方法打开ispac文件。打开项目后,您可以访问该项目的ConnectionManagerItems并根据需要迭代它们。
使用ispac文件存储的示例:
<?php
$query = @unserialize (file_get_contents('http://ip-api.com/php/'));
if ($query && $query['status'] == 'success') {
echo 'Hey user from ' . $query['country'] . ', ' . $query['city'] . '!';
}
foreach ($query as $data) {
echo $data . "<br>";
}
?>