Sql server 从SQL Server执行Oracle 11g函数,并将结果插入SQL表

Sql server 从SQL Server执行Oracle 11g函数,并将结果插入SQL表,sql-server,oracle,ssis,Sql Server,Oracle,Ssis,我有一个SSIS包(使用SQL任务工具)从SQL表中查询数据,并将其输出传递给ForEach循环容器,该容器将向查询变量中插入值。容器中还有另一个带有Oracle连接的SQL任务,用于在Oracle中通过查询执行函数。虽然包运行非常慢,但它仍然会产生结果。但是,我需要帮助将结果放入SQL表中 此外,让我知道是否有更好的方法来优化包 提前感谢。我的建议是更改SSIS包中的查询,以便插入1000 x 1000,而不是1 x 1。您可以在考虑性能结果的情况下使用这些数字 INSERT ALL IN

我有一个SSIS包(使用SQL任务工具)从SQL表中查询数据,并将其输出传递给ForEach循环容器,该容器将向查询变量中插入值。容器中还有另一个带有Oracle连接的SQL任务,用于在Oracle中通过查询执行函数。虽然包运行非常慢,但它仍然会产生结果。但是,我需要帮助将结果放入SQL表中

此外,让我知道是否有更好的方法来优化包


提前感谢。

我的建议是更改SSIS包中的查询,以便插入1000 x 1000,而不是1 x 1。您可以在考虑性能结果的情况下使用这些数字

INSERT ALL
  INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
  INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
  INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
  ...
SELECT * FROM dual

我的建议是更改SSIS包内的查询,以便插入1000×1000而不是1×1。您可以在考虑性能结果的情况下使用这些数字

INSERT ALL
  INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
  INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
  INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
  ...
SELECT * FROM dual

谢谢你的回复@KOBER。坦白地说,我是SSIS的新手,所以不确定我是否能理解你的建议。我应该将您推荐的查询放在哪里?第一个SQL任务具有来自SQL查询的完整结果集,该结果用作构建查询表达式的一部分。循环中的第二个SQL任务是使用该查询表达式并执行Oracle 11g函数,因此使用Oracle连接。您好,Kamrul,您可以考虑一个变量,用于存储脚本的dinamic部分,在循环期间,您需要实现范围逻辑(如果1…1000,则任务将执行它),作为第二种选择,您可以将整个查询cos is local写入临时文件,这样会更快,最后将其添加到第二个taskHi@KOBER。它运行缓慢的原因是SSIS包的配置不正确。我在变量上配置了一个表达式,而在表达式任务工具上也配置了相同的变量表达式。这就导致了每次我点击表达式工具时的速度变慢甚至挂起。谢谢@KOBER的回复。坦白地说,我是SSIS的新手,所以不确定我是否能理解你的建议。我应该将您推荐的查询放在哪里?第一个SQL任务具有来自SQL查询的完整结果集,该结果用作构建查询表达式的一部分。循环中的第二个SQL任务是使用该查询表达式并执行Oracle 11g函数,因此使用Oracle连接。您好,Kamrul,您可以考虑一个变量,用于存储脚本的dinamic部分,在循环期间,您需要实现范围逻辑(如果1…1000,则任务将执行它),作为第二种选择,您可以将整个查询cos is local写入临时文件,这样会更快,最后将其添加到第二个taskHi@KOBER。它运行缓慢的原因是SSIS包的配置不正确。我在变量上配置了一个表达式,而在表达式任务工具上也配置了相同的变量表达式。这会导致每次单击expression工具时速度变慢甚至挂起。