1

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

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

当我通过 data access mode = 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 '+'.".
4

3 回答 3

4

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

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

SELECT * FROM Products Where ProductID > 1

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

于 2013-06-12T17:55:25.457 回答
0

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

于 2018-07-18T06:16:25.960 回答
0

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

于 2016-10-17T07:26:06.037 回答