SSIS:将sql命令作为变量传递给ole db源

时间:2013-06-12 17:15:39

标签: ssis

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

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

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

数据流任务错误[OLE DB源[1]]:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80040E14。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80040E14描述:“语句无法准备。”。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80040E14描述:“'+'附近的语法不正确。”。

3 个答案:

答案 0 :(得分:4)

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

如果在变量网格中检查SQL查询变量的值,则应该说:

SELECT * FROM Products Where ProductID > 1

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

按如下所示放置命令: “ SELECT * FROM产品,其中ProductID>” +(DT_STR,10,1252)@ [user :: ProductValue] +“”