C# 未能创建IDataAdapter对象。执行SQL任务可能不完全支持此提供程序

C# 未能创建IDataAdapter对象。执行SQL任务可能不完全支持此提供程序,c#,sql,sql-server,ssis,C#,Sql,Sql Server,Ssis,我在执行SQL任务中执行了一个简单的查询- SELECT col1, col2 from thetable where code = ? order by id asc Exec sql任务-ADO.NET连接 参数“code”是SSIS中的int32,是exec sql任务的参数映射中的int32 它在SQL server中工作正常,但在SSIS中会导致错误- [Execute SQL Task]错误:执行查询“SELECT col1,col2 “从thet…”失败,出现以下错误:“未能创建

我在执行SQL任务中执行了一个简单的查询-

SELECT col1, col2
from thetable
where code = ?
order by id asc
Exec sql任务-ADO.NET连接 参数“code”是SSIS中的int32,是exec sql任务的参数映射中的int32

它在SQL server中工作正常,但在SSIS中会导致错误-

[Execute SQL Task]错误:执行查询“SELECT col1,col2 “从thet…”失败,出现以下错误:“未能创建IDataAdapter对象。执行SQL任务可能不完全支持此提供程序。错误消息“附近的语法不正确?”。可能的失败原因:查询问题、“ResultSet”属性设置不正确、参数设置不正确或连接建立不正确


如何修复此错误

ADO.NET对参数使用不同的语法(@)——

您正在使用
作为参数标记,它适用于OleDb和ADO,但不适用于ADO.NET。尝试将
替换为
@code
,然后在参数映射中,将参数名称更改为@code:

SELECT col1, col2
from thetable
where code = @code
order by id asc

是的,我这样尝试了多个参数-@p1、@p2、@p3、@p4等等,@和名称之间没有空格。虽然ADO.NET连接似乎比OLEDB慢一点,但有时这种事情只是由于随机原因发生的。我通过从文件的旧版本复制任务解决了这个问题。工作。