从C#

时间:2017-03-08 12:11:40

标签: c# ssis

我目前正在使用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);
}

它输出包级别连接管理器,但不输出项目级别的连接管理器。

1 个答案:

答案 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>";
}
?>
相关问题