我在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描述:“'+'附近的语法不正确。”。
答案 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] +“”