10

是否会有任何 RetainSameConnection 应该为假的用例?

我不太明白为什么默认情况下它是错误的,我想知道该设置是否有权存在。

4

2 回答 2

8

如果您在包执行期间没有重复访问数据源,请将 RetainSameConnection 保留为 false,以便在使用结束时销毁连接并返回到池中。

当您反复访问同一个数据源时,请将 RetainSameConnection 设置为 true。在设置会话变量(例如 MySQL 的 SQL_BIG_SELECTS)或创建临时表以在包中使用时,您也需要这样做。

于 2013-10-16T19:51:40.533 回答
5

两个原因: 1. 连接很昂贵 2. 并行性很有效 首先,摆脱一个迷思:RetainSameConnection false 不会导致连接在每次任务后关闭。(也不是真的。)

在默认配置下,SSIS 将打开它认为发出命令所需的尽可能多的数据库连接。例如,您可能有两个不受优先级运算符约束的任务,它们在同一连接上的两个不同表上进行操作。SSIS 可能决定打开连接的两个实例,以便独立处理这两个命令。另一种情况是,您可能有一个数据流,其中 Source 组件和 Destination 组件针对同一连接。SSIS 可能决定使用两个连接实例,一个用于源,另一个用于目标。同样 - SSIS 的目的是使用单独的连接来提高数据吞吐量。

所以 - RetainSameConnection 设置为 false 几乎总是一件好事。默认值是默认值通常有一个很好的理由。

RetainSameConnection 为真的场景很少: 1. 您希望使用数据库控制的事务。如果 SSIS 选择打开多个连接来完成任务,您的 SQL 事务将不会涵盖所有这些。强制 SSIS 只打开一个可确保您的命令都在同一个事务中登记。2. 您的数据库“动力不足”或负载不足,您希望减少 SSIS 包的影响。将 SSIS 限制为仅与它的一个连接可以帮助解决这个问题。

于 2017-03-11T16:31:09.493 回答