我正在尝试使用SQL Server 2008 SSIS将行从Access数据库插入MySQL数据库中。
TITLE: Microsoft SQL Server Management Studio ------------------------------ ERROR [42000] [MySQL][ODBC 5.1 Driver][mysqld-5.0.51a-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"orders"' at line 1
问题出在定界符上。我正在使用5.1 ODBC驱动程序,并且可以连接到MySql并从ADO.Net目标数据源中选择一个表。在SSIS包编辑器中,所有MySql表均以双引号分隔:
"shipto addresses"
如果表名中有空格,则无法从ADO.NET目标编辑器上的“使用表或视图”文本框中删除双引号或将其替换为其他内容。当SSIS将Insert查询放在一起时,它将保留双引号并添加单引号。
当我在编辑器中单击“预览”时,将显示以上错误,并且在运行程序包时引发了类似的错误(尽管实际上是从实际的insert语句发出的)。
我似乎无法控制这种行为。有什么建议?我可以手动编码SQL的其他程序包类型没有此问题。
解决方案是使用执行以下任务的Execute Sql任务,将连接重用于所有任务,并在执行任何插入操作之前为连接打开ANSI引号:
set sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION,ANSI_QUOTES'