如何修复错误:多步OLE DB操作生成错误。检查每个OLE DB状态值

时间:2013-06-26 17:03:40

标签: ssis

我将变量值作为输入参数传递给execute sql task中的脚本。它是包含值C:/ Archive

的字符串变量

输入参数数据类型是执行sql任务中参数映射的varchar。

执行sql任务中的

脚本是

Declare @body1 nvarchar(max), @b nvarchar(max)

set @body1 = 'The softdollar error files are located at '
set @b =  @body1 + ?

EXEC msdb.dbo.sp_send_dbmail 
@profile_name='PWO Notification',
@recipients='JoJo@foo.com',
@subject= 'Soft Dollar Package',
@body= @b

包抛出错误:

“多步OLE DB操作生成错误。检查每个OLE DB状态值,如果可用。没有工作。”。可能的失败原因:查询问题,“ResultSet”属性设置不正确,参数设置不正确或连接未正确建立。

2 个答案:

答案 0 :(得分:1)

如果您将set @b = @body1 + ?更改为set @b = @body1 + N'?'它是否有效?

我的假设是声明并没有像人们预期的那样连接。具体来说,如果你做了declare @c nvarchar(max); SET @c =?; SET @b = @body1 + @c;我怀疑事情将被转义并以正确的,逃脱的方式取代。

如果没有,请报告,我将删除此答案。

答案 1 :(得分:0)

我通过创建一个新变量并将脚本作为该变量中的表达式来修复它。在Execute sql task中调用变量。将脚本中参数映射的变量设置为@ [user :: variable],其中问号为。