【问题标题】:SSIS packages - Error on importing data from SQL Server 2019 to MySQL 8.0SSIS 包 - 将数据从 SQL Server 2019 导入 MySQL 8.0 时出错
【发布时间】:2021-10-27 13:10:17
【问题描述】:

我们每天都在使用大量的 SSIS 包将数据从 SQL Server 数据库导入 MySQL 数据库。我们之前使用过 SQL Server 2012 和 MySQL 5.0,所有作业都运行良好。但我们必须基于许可目的迁移到 SQL Server 2019。我们还决定将我们的 MySQL 更新到 8.0 版。从这一点开始,我们有些痛苦。

当开发人员在本地 PC 或远程开发服务器(通过远程桌面)上执行任何更新的包时 - 包工作正常,所有数据都成功从 SQL Server 2019 迁移到 MySQL 8.0。

我们将包(我的意思是整个项目)部署到基于 SQL Server 的集成服务目录。如果我们在服务器上运行任何升级的包,我们会得到一个错误:“错误:列数不正确。”在验证阶段: (消息顺序 - 从下到上)

有些包非常简单。他们也失败了:(

简单打包示例步骤:

  1. 从 SQL Server 2019 获取数据:

  1. 然后在 MySQL 8.0 中将数据写入表:

所有列都正确映射。没有未映射的列。

这里出现了一个错误。

所以,我们想知道出了什么问题,因为 SSIS 服务器和开发机器上的所有驱动程序都是相同的。我们检查了 5.0 和 8.0 之间的 MySQL DSN 配置。它们是一样的。

我们检查了两次参数并尝试构建、运行和部署 SSIS 包:

  • 来自不同开发者 PC 的 VS 2019
  • 全新安装 VS 2019、SSDT 和 SSIS 扩展
  • 没有连接字符串的参数化

我们更新了包以使用新的 TargetServerVersion - SQL Server 2019:

我们在新的 SQL Server 2019(x32 和 x64 版本)上安装了 MySQL ODBC Driver 8.00.26。开发人员 PC 上安装了相同的驱动程序版本。

Integration Services 目录之外的程序包正常运行。我们将其中一些重构为使用工具“dtexec”从命令行运行。没有出现错误!但是,imo,这不是执行 SSIS 的正确方法,因为没有执行历史记录、日志和经过验证的调度程序。我们正在寻找在 SQL Server 上使用标准功能执行所有包的可能性,而不是从命令行执行。

如果我的问题有任何帮助,我会很高兴。

【问题讨论】:

  • SSIS 目录项目配置怎么样?右键单击 SSMS 对象资源管理器中的项目,然后选择“配置...”
  • 您指的是哪些选项?只有参数和对环境的引用。我们仅使用参数和环境来存储不同技术环境的连接字符串。它们在执行包时工作正常,我们在执行历史日志中看到正确的参数。
  • SSIS 运行时环境配置很可能指向“错误”的 mysql 环境,其架构与 mysql dev 不同。环境。这可能是错误的原因:“错误:列数不正确。”在验证阶段。
  • @Arseniy 检查包和项目的保护级别?如果它们不同,则可能会导致问题。也尝试设置“延迟验证”= True。

标签: mysql sql-server ssis


【解决方案1】:

好吧,我们解决了这个问题。花了这么长时间,因为开发人员无权访问服务器配置来检查连接属性。首先,问题出在 ODBC 数据源配置中,选择了错误的数据库。其次,我们使用短连接字符串,例如“Dsn=OdbcConnectionName”,其中“OdbcConnectionName”是来自 ODBC 数据源的 ODBC 连接名称。

两个数据库之间的一些表是相同的,所以我们认为我们在正确的数据库中。从管理员那里得到截图后,我们意识到连接错误。

这是字段,这是错误的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 2014-02-27
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多