SSIS System.Reflection.TargetInvocationException

时间:2018-02-16 13:26:51

标签: sql-server csv ssis excel-2007

我最近建立了一个使用Excel 2007电子表格(.xlsx扩展名)的SSIS包(2008)。电子表格的内容被转储到记录集对象中,然后传递给脚本任务编辑器,该脚本任务编辑器遍历每一行,以适当的方式格式化数据,然后将其写入csv文件。

CSV输出到达与找到Excel文件相同的网络位置。在我的本地开发环境中,一切都正常工作,但是当程序包部署到实时SQL服务器并从那里执行时,我们得到以下错误:

  

错误:2018-02-16 12:42:41.60代码:0x00000001来源:   将记录集导出为CSV说明:   System.Reflection.TargetInvocationException:抛出了异常   通过调用的目标。

     

---> Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException:" component" Recordset Destination" (338)"写了564行。

     

---> System.Runtime.InteropServices.COMException(0xC0010014):" component" Recordset Destination" (338)"写了564行。

     

at Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVa​​riable100.get_Value()

     

at Microsoft.SqlServer.Dts.Runtime.Variable.get_Value()

     

---内部异常堆栈跟踪结束---

     

at Microsoft.SqlServer.Dts.Runtime.Variable.get_Value()

     

at ST_5a1e9be825584201adc4e2b6248e429e.vbproj.ScriptMain.Main()

     

---内部异常堆栈跟踪结束---

     

at System.RuntimeMethodHandle._InvokeMethodFast(Object target,   Object []参数,SignatureStruct& sig,MethodAttributes   methodAttributes,RuntimeTypeHandle typeOwner)

     

at System.RuntimeMethodHandle.InvokeMethodFast(Object target,Object []   arguments,Signature sig,MethodAttributes methodAttributes,   RuntimeTypeHandle typeOwner)

     

在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags)   invokeAttr,Binder binder,Object []参数,CultureInfo文化,   Boolean skipVisibilityChecks)

     

在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags)   invokeAttr,Binder binder,Object []参数,CultureInfo文化)

     

at System.RuntimeType.InvokeMember(String name,BindingFlags   bindingFlags,Binder binder,Object target,Object [] providedArgs,   ParameterModifier []修饰符,CultureInfo文化,String []   namedParams)

     

at System.Type.InvokeMember(String name,BindingFlags invokeAttr,   Binder binder,Object target,Object [] args,CultureInfo culture)

     

在   Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

     

结束错误DTExec:程序包执行返回DTSER_FAILURE(1)   开始时间:12:42:39完成时间:12:42:41经过:1.64秒

     

包执行失败。步骤失败了。

最初我们认为问题是因为软件包试图运行64位版本的Excel,但我们已经将其作为原因进行了裁决。

我完全无法理解为什么软件包在我的本地计算机上没有问题,但在远程服务器上失败,特别是因为我使用的代码几乎相同到一个单独的包中的代码,它没有问题。

1 个答案:

答案 0 :(得分:0)

我会确保您要转储的CSV具有要写入的程序包的正确权限。您的环境也是最新修补的。

我确实找到了一篇帖子here,其中有人提到你的问题类似。他说他通过删除和重建记录集对象来解决它 - 如果以上情况不起作用,我会尝试下一步。