mysql - BIML 创建错误的元数据

标签 mysql sql-server ssis biml

我有一个项目将数据从 MySQL 数据库移动到 SQL2012 中的数据库。现在没有什么特别的,只是直接推送数据。我通过 ODBC 访问 MySQL 实例,SQL DB 是一个 OLE 连接。生成包时,ODBC 源和 OLE 目标之间存在元数据不匹配。 (到目前为止,这就是数据流的全部内容)消息指出“列”无法在 unicode 和非 unicode 字符串类型之间转换。

检查源和目标之间路径编辑器中的元数据表明,问题源列被读取为 DT_STR,长度为 255,代码页为 1252。然而在 MySQL 中,它们被整理为 utf8_general_ci,这是 unicode。

目标 SQL 数据库表中对应的列是相同长度的 varchar。

如果我打开 OLE 目标并单击“确定”,元数据会刷新,并且在保存包后工作正常。这违背了使用 BIML 创建包的全部目的,并且需要很长时间才能打开 50 多个包来刷新元数据并保存。

我已经尝试了几件事,但行为没有任何变化:

  • 在 unicode 和 ansi MySQL odbc 驱动程序之间切换。
  • 尝试将目标列设为 nvarchar。但我必须进行数据转换转换才能完成这项工作。
  • 将 OLEDBDestination 的 ExternalTableOutput 元素中 [] 中的架构/表名称括起来。
  • 更改了 SQL Native Client 版本。
  • 在从 MySQL 提取的源查询末尾放置一条“COLLATE latin1_bin”语句。
  • 最初是在带有 BimlExpress 的 VS2015 中,并在带有 BimlExpress 的 SSDT 2012 中尝试过。 (顺便说一句...由于缺少 Microsoft.DataWarehouse.Interfaces dll,必须安装 SSDT 2014 才能让 BIML 在 SSDT2012 中编译)

任何想法都将受到欢迎,我对这方面的想象几乎已经结束。

谢谢!

最佳答案

我遇到过类似的问题。最后只好用记事本打开生成的打包,通过文本文件把bytes这个词换成wstr。我保存并重新打开,一切正常。

关于mysql - BIML 创建错误的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42656296/

相关文章:

php - 对 mysql 查询的结果进行排序

mysql - 如何检查MySQL中表字段上是否存在索引

c# - 使用 C#(或任何其他方法)将 XML 转换为 SQL Server 表

sql - 如何删除表中包含其他表外键的行

ms-access - 如何以编程方式获取SSIS包中的MS Access表列表?

sql - SSIS 连接错误

php - 字段未从 php 插入到 mysql 数据库中

MySQL的执行顺序

C# 和 SQL Server 2008 - 批量更新

c# - Visual Studio 2015 SSIS - 未在 SSIS 工具箱中选取自定义 SSIS 组件