Sql 将变量字符串传输到OLE DB数据源时出错
我按照的步骤实现增量加载。根据步骤1的最后一步,我在SSDT中声明了一个字符串变量,并将一个字符串作为 SqlString='select*from CustomizedFunction(Argument1、Argument2、Argument3)' SqlString很好,因为我已经在SSMS中打印出来了 但是,当在数据流的OLEDB数据源中访问SqlString时。发生错误 Hresult:0xC0202009 数据流任务加载数据[OLEDB源[1]]时出错:SSIS错误代码DTS_E_OleeError。发生OLEDB错误。错误代码:0x80040E0C。Sql 将变量字符串传输到OLE DB数据源时出错,sql,sql-server,tsql,ssis,Sql,Sql Server,Tsql,Ssis,我按照的步骤实现增量加载。根据步骤1的最后一步,我在SSDT中声明了一个字符串变量,并将一个字符串作为 SqlString='select*from CustomizedFunction(Argument1、Argument2、Argument3)' SqlString很好,因为我已经在SSMS中打印出来了 但是,当在数据流的OLEDB数据源中访问SqlString时。发生错误 Hresult:0xC0202009 数据流任务加载数据[OLEDB源[1]]时出错:SSIS错误代码DTS_E_Ol
OLEDB记录可用。来源:“Microsoft SQL Server Native Client11.0”HResult:0x80040E0C说明:“未为命令对象设置命令文本。”我不明白您如何在SSIS中打印SSMS中声明的变量 如果表值函数的参数是动态的,则必须在SSIS中将变量声明为字符串,并使用*EXPRESSION*s构建SQL命令
在配置OLEDB源时,您必须在数据访问模式下选择“变量中的SQL命令”选项,并选择变量“SqlString”。SSIS OLE DB源必须具有初始列定义才能工作。使用“来自变量的SQL命令”时,需要提供此列定义 让我从这个概念的一般应用开始。然后我将讨论您的特定场景 一般情况 在某些情况下,您可能有一个没有初始值的字符串变量,并且在过程中的某个时刻,该值被赋值。在这种情况下,必须提供初始值。一种方法是使用提供列和数据类型的虚拟查询
SqlString='SELECT CAST(MyColumn1 AS VARCHAR(10)) AS MyColumn1, CAST(MyColumn2 AS INT) AS MyColumn2 FROM CustomizedFunction(Argument1,Argument2,Argument3)'
例如,将变量的初始值设置为:
SELECT CAST('' AS VARCHAR(10) AS MyColumn1, 0 AS MyInteger FROM MyTable WHERE 1= 2
此查询永远不会返回结果,但它提供OLE DB源所需的列定义。
在执行OLE DB源之前的某个时刻,您需要将实际查询分配给变量
具体案例
你的情况相似,但略有不同。
在您的特定情况下,您有以下查询:
SqlString='select * from CustomizedFunction(Argument1,Argument2,Argument3)'
OLE DB Source不知道SELECT*
的列定义是什么。您需要将SELECT*
替换为实际的列名及其数据类型
SqlString='SELECT CAST(MyColumn1 AS VARCHAR(10)) AS MyColumn1, CAST(MyColumn2 AS INT) AS MyColumn2 FROM CustomizedFunction(Argument1,Argument2,Argument3)'
我根据最近在这个问题上的经验得到了一个更新的答案
在为所有列添加别名的步骤之后(为每个列提供一个列标题)
对于SSIS任务,我们必须在高级编辑器中将“验证外部元数据”设置为false。一旦这样做了,错误就为我们消除了
我将此保留在这里,作为将来遇到此问题的用户的额外帮助。根据错误消息,您是否将命令对象的CommandText设置为字符串?@FebWind,最好将错误消息复制并作为文本而不是图像传递。所以,我们不必使用放大镜。对不起,lgor。我不知道为什么无法将错误消息复制为SSIS中的文本。所以我必须抓拍它并保存为图像。安德鲁,我不明白你的意思。如何设置命令对象的CommandText?我声明了一个由sql语句设置的字符串变量。设置时,使用参数。错误消息是什么?。我们的防火墙似乎阻止了您的屏幕截图。由于名为stringvariable的字符串变量实际上绑定到SSIS中的SQL语句,我想看看这里是否有语法错误。SQL语句以字符串形式返回,例如选择“select…”作为sqlString。然后在结果集选项卡中,将sqlString映射到stringvariable。最后,我想在数据源中使用变量stringvariable。但是我的帖子中显示的错误总是存在的。