MySQL ADO.NET连接器和MSSQL集成服务

在这里,我是第三天…尝试在运行MSSQL 2012和Visual Studio 2010的Windows Vista盒(64位)上同步数据视图。理智正在滑落,渴望进步使我注意。

我经历了地狱,试图让MySQL的ODBC驱动程序得到的工作,但无济于事…每个人似乎都迷了路,我能find的所有线程都是不适合我的解决scheme。 问题:SSIS没有看到系统DSN。

不显示为ODBC数据源的SSIS DSN

我决定尝试一下ADO.NET连接器……而且让我惊讶的是它实际上是在SSIS数据源的select列表中。 所以我开始运行创build一个数据stream任务,创build一个ADO.NET源(一个本地MSSQL数据库)…一切正常。

然后,我迅速移动到创build一个ADO.NET目的地,input我的凭据…哇,我最终在我的Linux服务器上select一个数据库! 开心的想着,我终于find了一个完成工作的方法。

然后,我转向映射…不,有些事情是错误的…我得到一个错误,伤害了我的眼睛:

pipe道组件已从方法调用返回HRESULT错误代码0xC0208457。 数据stream任务错误[ADO NET Destination [81]]:无法获取外部列的属性。 您input的表名可能不存在,或者您对表对象没有SELECT权限,并且通过连接获取列属性的替代尝试失败。 详细的错误信息是:“你的SQL语法有错误,检查与你的MySQL服务器版本相对应的手册,在第一行的数据库”.tablename“附近使用正确的语法。

pathC:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ DTS \ ProviderDescriptors \上的描述符文件不包含连接types为MySQL.Data.MySqlClient.MySqlConnection的模式信息。

所以它看起来不可能的信息,因此我不能正确地映射表。

任何想法,这将是超级有用的…在提前感谢所有!

好吧,我发现这个问题…默认情况下MS把MySQL的数据库和表名称引号。 我删除引号,我终于可以把表格映射在一起。 然而,另一个问题,但…另一个职位。

默认情况下,MSSQL将列和表名称放在引号中,对于MySQL我们需要将ANSI_QUOTES添加到sql-mode

它可以在my.inimy.cnf设置,具体取决于您的操作系统。

例如,对于Windows Server 2012 MySQL 5.6,您可以在C:\ProgramData\MySQL\MySQL Server 5.6find它。

my.ini ,你需要find#sql-mode并更新它,在最后加上'ANSI_QUOTES'。 一个例子是:

 sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES" 

然后你需要重新启动MySQL服务,然后在MSSQL的SSIS面板中进行下一步。