【问题标题】:Failed to create an IDataAdapter object. This provider may not be fully supported with the Execute SQL Task未能创建 IDataAdapter 对象。执行 SQL 任务可能不完全支持此提供程序
【发布时间】:2013-12-26 23:43:53
【问题描述】:

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

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

执行 sql 任务 - ADO.NET 连接 参数“code”在SSIS中是int32,在exec sql任务的参数映射中是int32。

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

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

如何解决此错误?

【问题讨论】:

    标签: c# sql sql-server ssis


    【解决方案1】:

    ADO.NET 对参数使用不同的语法 (@) - Map Query Parameters to Variables in an Execute SQL Task

    您正在使用? 作为参数标记,它适用于 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 慢一些。
    • 有时这件事只是由于随机原因而发生的。我通过从旧版本的文件中复制任务来解决它。工作。
    猜你喜欢
    • 2019-01-01
    • 1970-01-01
    • 2014-10-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多