You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SSIS包中用同一OLE DB连接并行创建两个全局临时表

问题原因与解决方案

核心原因

你遇到的问题本质是SSIS OLE DB连接的会话复用机制导致的:

  • SSIS的OLE DB连接管理器默认启用连接池,并行任务使用同一连接管理器时,会复用同一个数据库连接会话。
  • SQL Server的单个数据库会话是单线程的,无法同时处理多个并行请求,两个“并行”任务实际会串行执行,再加上全局临时表的会话关联特性,最终导致只有一个表创建成功。

解决方法

方法1:禁用连接池

修改现有OLE DB连接管理器的属性,强制每个任务使用独立会话:

  1. 打开连接管理器的属性窗口(右键→属性)。
  2. 在“所有属性”中找到Pooling,设置为False。
  3. 同时确保RetainSameConnection属性为False(默认值),这样每个任务执行时会创建全新的数据库连接,实现真正并行。

方法2:使用独立连接管理器(已验证有效)

为每个并行创建临时表的任务单独配置OLE DB连接管理器,即使使用相同的数据库凭据。每个连接管理器会对应独立的数据库会话,自然支持并行操作。

方法3:调整事务设置

如果任务启用了事务,同一连接下的事务会强制串行执行:

  • 将任务的事务选项设置为不使用事务或支持事务(避免“要求事务”导致的会话锁定)。

补充说明

SQL Server的全局临时表(##表名)虽为全会话可见,但它的生命周期与创建它的会话绑定:只有当创建会话关闭,且所有引用该表的会话断开后,临时表才会被删除。因此只要确保每个创建任务使用独立的数据库会话,就能成功并行创建。

内容的提问来源于stack exchange,提问作者slaiman muneer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:52:32