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

SSIS execute sql commands stored in a column of a table

Error: error occurred while extracting the result into a variable of type (DBTYPE_WSTR). Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

我使用 SSIS 在 sql 列命令中放置了将 pdf 转换为 blob 的命令,它们已经过测试并且可以单独工作。所以我想查询 table 列并将其传递给 exec sql 任务并执行每个命令。我尝试了很多不同的东西,目前我有一个执行 sql 任务结果集在 ResultSet 中被设置为 "full result set" 名称被设置为 0 并且变量是 User::sqlcmds 这进入了一个 foreach 循环容器ADO 对象源变量的集合选项卡设置 = User::sqlcmds,枚举模式为第一个 table 中的行。变量映射选项卡的变量 = User::sqlcmdenu 和索引设置为 0。在 foreach 容器中,我有一个执行 sql 任务和 sql 语句设置为:

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

参数映射:变量名=user::sqlcmds,方向:输入,Datatype:NVARCHAR,参数名输入sqlcmd.

我做错了什么?

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

Error: error occurred while extracting the result into a variable of type (DBTYPE_WSTR). Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

通过返回数据流任务让它工作: oledb源有-> select convert(varchar(4000),cmd) cmd from attcmd

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

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

务必将输入列的列映射设置为Param_0!

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