【发布时间】:2018-02-16 13:26:51
【问题描述】:
我最近构建了一个使用 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 行。
在 Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVariable100.get_Value()
在 Microsoft.SqlServer.Dts.Runtime.Variable.get_Value()
---内部异常堆栈跟踪结束---
在 Microsoft.SqlServer.Dts.Runtime.Variable.get_Value()
在 ST_5a1e9be825584201adc4e2b6248e429e.vbproj.ScriptMain.Main()
---内部异常堆栈跟踪结束---
在 System.RuntimeMethodHandle._InvokeMethodFast(对象目标, Object[] 参数、SignatureStruct& sig、MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System.RuntimeMethodHandle.InvokeMethodFast(对象目标,对象 [] 参数,签名 sig,MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr、Binder binder、Object[] 参数、CultureInfo 文化、 布尔型 skipVisibilityChecks)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] 参数, CultureInfo 文化)
在 System.RuntimeType.InvokeMember(字符串名称,BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] 修饰符、CultureInfo 文化、String[] 命名参数)
在 System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder、Object 目标、Object[] args、CultureInfo 文化)
在 Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
结束错误 DTExec:包执行返回 DTSER_FAILURE (1)。
开始时间:12:42:39 结束时间:12:42:41 经过时间:1.64 秒。包执行失败。步骤失败。
最初我们认为问题是因为该程序包试图运行 64 位版本的 Excel,但我们已将其排除在外。
我完全无法理解为什么程序包在我的本地机器上运行没有问题,但在远程服务器上却失败了,特别是因为我用于此的代码几乎与一个单独的包,可以正常工作。
【问题讨论】:
标签: sql-server csv ssis excel-2007