【问题标题】:SSIS: AcquireConnection errors after migrating to Azure VMSSIS:迁移到 Azure VM 后出现 AcquireConnection 错误
【发布时间】:2020-07-27 09:49:16
【问题描述】:

最近我们从本地迁移到基于 Azure VM 的 SQL Server 实例(本地 12C/128GB,Azure VM 16C/128GB)。我们从 2008 年迁移到 2016 年的 SSIS 包。

我们有一个 SSIS 包(在与 SQL Server 相同的 VM 上运行),它运行 15 个非常相似的并行序列容器。每个容器从自己的 EXT 表中选择数据,应用一些转换,然后将其插入到一个 STT 表中(所有容器通用)。两种类型的表都在同一个数据库中。有时在执行包时我们会随机遇到错误:

SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection 方法调用连接管理器 “DBCONN_STG_OLEDB”失败,错误代码为 0xC0202009。

没有一致性,每次错误发生在不同的任务上。旧环境中没有出现错误。

我怀疑与数据库的并行连接可能存在问题。错误很难重现,因为它是随机发生的。

【问题讨论】:

  • 能否包含内部异常?这通常是由于弹性错误而发生的。 Azure feedback 遗憾的是,SSIS 不支持连接管理器上的弹性错误。
  • @PrebenHuybrechts 在我的例子中,SSIS 和数据库(SQL Server 标准实例)都位于同一个 Azure VM 上。我没有看到更多与此错误相关的日志。

标签: sql-server ssis


【解决方案1】:

出现此问题的原因是 OLE DB 处理 Microsoft SQL Server 2012 中参数的方式发生了变化。这种变化是设计使然。若要解决此问题,请重写查询以向原始数据类型添加额外的显式强制转换。然后, sp_describe_undeclared_pa​​rameters 返回正确的预期类型。要在“症状”部分中描述的示例查询中解决此问题,请按如下方式更新查询:

SELECT   mydate 
FROM     dbo.myTable
WHERE mydate >= convert(char ,dateadd(year,-1, cast( cast( ? as char(8)) as datetime)))

【讨论】:

  • 我看到这适用于 SQL Server >2014。我使用 SQL Server 2019
猜你喜欢
  • 2021-10-15
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多