【发布时间】: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 的集成服务目录。如果我们在服务器上运行任何升级的包,我们会得到一个错误:“错误:列数不正确。”在验证阶段: (消息顺序 - 从下到上)
有些包非常简单。他们也失败了:(
简单打包示例步骤:
- 从 SQL Server 2019 获取数据:
- 然后在 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