首页 文章

BIML创建错误的元数据

提问于
浏览
2

我有一个项目将数据从MySQL数据库移动到SQL2012中的数据库 . 现在没什么好看的,只是直接推送数据 . 我通过ODBC访问MySQL实例,SQL DB是一个OLE连接 . 生成包时,ODBC源和OLE目标之间存在元数据不匹配 . (这就是到目前为止数据流的所有内容)消息状态“Column”“无法在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'语句 .

  • 最初是在VS2015中使用BimlExpress并在SSDT 2012 w / BimlExpress中试用过它 . (顺便说一下......为了让BIML在SSDT2012中编译因为缺少Microsoft.DataWarehouse.Interfaces dll而必须在2014年安装SSDT)

任何想法都会受到欢迎,我几乎想到了这个想法 .

谢谢!

1 回答

  • 0

    我遇到了类似的问题 . 最后,我不得不在记事本中打开生成的打包,并用文本文件中的wstr替换单词bytes . 我保存并重新打开,一切正常 .

相关问题