SSIS执行SQL任务连接MySQL 单条SQL正常多条执行报错
问题原因
SSIS Execute SQL任务通过ADO.NET驱动连接MySQL时,默认驱动配置不支持单批次内多条独立SQL的结果状态回传校验:单条SQL执行时驱动返回的执行计数符合任务预期,可正常运行;多条SQL连续执行时驱动会返回多个结果序列,和任务默认的单结果校验逻辑冲突,直接抛出ResultSet配置相关错误。
解决方案
任选以下一种方案即可实现单任务执行多语句:
- 方案1:调整连接字符串配置
打开当前使用的ADO.NET MySQL连接管理器,在连接字符串末尾追加配置项:AllowUserVariables=True;AllowBatch=True;,如果使用旧版Oracle官方MySql.Data驱动,需额外追加CheckParameters=False。配置完成后原有SQL语句无需修改,直接执行即可。 - 方案2:改写SQL为语句块格式
将任务的ResultSet属性设置为None,清空所有参数映射配置,替换直接输入的SQL内容如下:DELIMITER // BEGIN CREATE TABLE Test_abc ( task_id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL ); INSERT INTO Test_abc(title) VALUES('abc'); END // DELIMITER ; - 方案3:添加适配语句兼容驱动校验逻辑
无需修改连接配置,保持ResultSet属性为None,在原有SQL前后各加一行简单查询语句,适配驱动的结果返回逻辑即可,示例:SELECT 1; CREATE TABLE Test_abc ( task_id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL ); INSERT INTO Test_abc(title) VALUES('abc'); SELECT 1;
内容的提问来源于stack exchange,提问作者Saira
相关产品推荐
相关产品推荐

