【问题标题】:SSIS Ole DB Connection hangs without errorSSIS Ole DB 连接挂起且没有错误
【发布时间】:2021-08-18 01:13:21
【问题描述】:

我正在 Microsoft SQL Server Data Tools for Visual Studio 2017 中处理 SSIS 项目。我们必须使用 OleDB Source 组件将 Oracle 12C 数据库中的数据加载到 SQL Server 2017 数据库中。 如果我们从 Visual Studio 执行包,这会很好,但是,一旦我们将它部署到 SQL Server,并从那里执行它,包一旦到达 DataFlow 任务就会无限期地挂起。 我们收到的最后两条 SSIS 执行消息是:

OnPrevalidate: package_name: Validation has started.
OnInformation: package_name: Information: Validation phase is beginning.

包不会继续进行,并永久保持在运行状态。 我们在开发人员计算机和 SQL Server 上都安装了相同的 ODAC(64 位)组件包。

我们还尝试使用功能齐全的 ADO.NET 源代码,但它缺少“从变量查询”功能,并且它的查询构建器也不将查询识别为有效语法(声称 || 和这样是错误的),所以我们也不能参数化它。

我们花了几个小时寻找有类似问题的人,但遗憾的是找不到任何与我们的问题相同的人。

感谢您提前回复!

【问题讨论】:

  • 您是否尝试过禁用 OLE db 源的 ValidateExternalMetadata 属性?如果打开用于 Oracle 连接的连接管理器的属性,ConnectionManagerType 是什么?另外,您使用的是哪个版本的 SQL Server 2017?
  • 我们确实尝试过,但没有成功。版本为14.0.17289.0,连接管理器为“Native OLE DB\Oracle Provider for OLE DB”。

标签: sql-server ssis


【解决方案1】:

我们发现了问题:我们没有安装 32 位驱动程序。这很奇怪,因为我们的 SQL Server 和 Oracle 服务器都是 64 位的,而且 SSIS 包设置为 64 位模式。至少,加载器现在可以工作了:)

编辑:我们也遇到了 32 位版本的问题:它没有足够的内存,因为 32 位版本的上限为 2 GB。我们有一个奇怪的解决方法:我们卸载了两个 ODAC 驱动程序,然后我们安装了 64 位驱动程序,然后是 32 位驱动程序,最后,再次安装了 64 位驱动程序。出于某种原因,它现在可以在 64 位模式下运行。真的,真的很奇怪。

【讨论】:

  • 感谢您发布您的解决方案(并为其他人省去了一些痛苦)。仅供参考,驱动程序位数只需与客户端位数匹配(在本例中为 SSIS 运行时)。如果你只安装了 32 位 SQL Server,那么我猜你的 SSIS 安装也只有 32 位。
【解决方案2】:

每次尝试运行 SSIS Oracle 数据源时,我都遇到了一个问题,它挂起的行数几乎完全相同。经过一堆试验和错误后,我意识到其中一个列是 CLOB。我在上面放了一个 dbms_lob.substr 并且提取运行得很好。我猜 Oracle 数据提供者对该数据类型存在某种问题,因为它不是很多数据,而且查询执行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    相关资源
    最近更新 更多