【问题标题】:SSIS: passing sql command as variable to ole db sourceSSIS:将sql命令作为变量传递给ole db源
【发布时间】:2020-02-07 17:50:43
【问题描述】:

我在 SSIS 中创建了 2 个变量,即 ProductValue 和 SQLQuery。 SQLQuery 包含如下 sql 语句:

"SELECT * FROM Products Where ProductID > " + @[user::ProductValue]

当我通过数据访问模式 = sql command from variable 将 SQLQuery 变量传递给 Ole db 源时,系统返回错误消息如下:

Error at Data Flow Task [OLE DB Source [1]]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80040E14.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80040E14  Description: "Statement(s) could not be prepared.".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80040E14  Description: "Incorrect syntax near '+'.".

【问题讨论】:

    标签: ssis


    【解决方案1】:

    您需要将 SQL 查询变量设置为 EvaluateAsExpression。

    如果您在变量网格中检查 SQL 查询变量的值,它应该会显示如下内容:

    SELECT * FROM Products Where ProductID > 1
    

    如果没有,那么你没有正确定义你的变量。 SQL 查询变量的值不应包含任何引号或 +,在这种情况下应仅包含表达式。

    【讨论】:

    • 如何“您需要将 SQL 查询变量设置为 EvaluateAsExpression”?
    • @KumarVaibhav 它在变量属性中
    【解决方案2】:

    如果有人遇到此线程,您可以在选择“显示高级编辑器”(=右键单击 Oledb 源)并选择“组件属性”选项卡并将“访问模式”切换为“来自变量的 SQL 命令”时更改设置”。

    【讨论】:

      【解决方案3】:

      这样输入命令: "SELECT * FROM Products where ProductID > " + (DT_STR, 10, 1252) @[user::ProductValue] + ""

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多