SSIS执行存储在表的列中的sql命令

  

错误:将结果提取到类型(DBTYPE_WSTR)的变量中时发生错误。可能的失败原因:查询问题,“ ResultSet”属性设置不正确,参数设置不正确或连接建立不正确。

使用SSIS,我在sql列中放置了将pdf转换为blob的命令,这些命令已经过测试并且可以单独工作。所以我想查询表列,将其传递给exec sql任务并执行每个命令。我尝试了许多不同的操作,目前我在ResultSet中将执行sql任务结果集设置为“完整结果集”,将名称设置为0,将变量设置为User :: sqlcmds,这将进入一个具有collection选项卡设置的foreach循环容器ADO对象源变量= User :: sqlcmds,枚举模式为第一个表中的行。 “变量映射”选项卡的“变量=用户:: sqlcmdenu”和“索引”设置为0。在foreach容器中,我有一个执行sql任务,并且sqlstatement设置为:

declare @sql nvarchar(max)
set @sql= CONVERT(NVARCHAR(4000),'  ' + ?)
exec sp_executesql @sql

参数映射:变量名= user :: sqlcmds,方向:输入,数据类型:NVARCHAR,参数名输入sqlcmd。

我在做什么错了?

尝试使用数据流,现在尝试执行sql和foreach。都不起作用。

  

错误:将结果提取到类型(DBTYPE_WSTR)的变量中时发生错误。可能的失败原因:查询问题,“ ResultSet”属性设置不正确,参数设置不正确或连接建立不正确。

z979581569 回答:SSIS执行存储在表的列中的sql命令

通过返回数据流任务使它工作: oledb源具有->从attcmd选择convert(varchar(4000),cmd)cmd

然后使用派生列进行转换->(DT_WSTR,4000)cmd(这解决了从非Unicode到Unicode的问题)。

这是在oledb命令中输入的,其中组件属性选项卡设置为-> 声明@sql nvarchar(max) 设置@ sql = CONVERT(NVARCHAR(4000),?) exec sp_executesql @sql没有结果集

确保将输入列的列映射设置为Param_0!

输入列的数据类型为DT_WSTR,而Param_0数据类型为Unicode字符串[DT_WSTR]。

本文链接:https://www.f2er.com/3141405.html

大家都在问