0

我有一个 SSIS pckage,我在其中从托管在不同服务器上的 350 个不同的 oracle 数据库中获取数据。我添加了一个 foreach 循环容器来从不同的服务器获取数据并将其存储到 1 个数据库中。我希望如果任何连接失败,那么我的包会跳过该连接并将其移至下一个连接,我该如何实现?

4

1 回答 1

0

如果我担心它不起作用,我会用 try catch 进行测试。

  1. 创建一个名为 canConnect 类型布尔值的变量。
  2. 你可能已经有了这个,但你需要一个 connectionString 变量类型的字符串
  3. 该连接字符串需要在 foreach 的每次迭代中设置
  4. 添加脚本任务
  5. 传入 canConnect 作为读/写和 connString 作为读
  6. 添加以下代码:

    Dts.Variables["canConnect"].Value = false;
    string cstr = Dts.Variables["connString"].Value;
    try
    {
         using(System.Data.OleDB.OleDbConnection conn = new System.Data.OleDB.OleDbConnection(cstr);)
          {
              conn.Open();
              Dts.Variables["canConnect"].Value = true;
    
          }
    }
    catch{}
    finally
    {conn.Close();}
    
  7. 如果你知道 canConnect = false 就做点什么

于 2020-05-08T19:17:52.233 回答