将多值D3数据库中的数据导入SQL问题

时间:2016-10-24 07:35:55

标签: sql ssis multivalue-database

尝试使用bluefinity工具使用mv.NET。制作了一些集成包,用于将数据从d3多值数据库导入MS SQL 2012,但似乎在映射方面遇到了一些问题。

对于VOYAGES表,D3应用程序中的一些commentsX字段表现得非常笨拙,并且INSERT在一定数量的行之后失败并显示以下消息

>Error: 0xC0047062 at INSERT, mvNET Source[354]: System.Exception: Error @8: dataReader[0] = LTPAC002 ci.BufferColumnIndex = 52, ci.ColumnName = COMMGROUP(Error @8: dataReader[0] = LTPAC002 ci.BufferColumnIndex = 52, ci.ColumnName = COMMGROUP(The value is too large to fit in the column data area of the buffer.))
at mvNETDataSource.mvNETSource.PrimeOutput(Int32 outputs, Int32[] outputIDs, PipelineBuffer[] buffers)
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPrimeOutput(IDTSManagedComponentWrapper100 wrapper, Int32 outputs, Int32[] outputIDs, IDTSBuffer100[] buffers, IntPtr ppBufferWirePacket)
Error: 0xC0047038 at INSERT, SSIS.Pipeline: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.The PrimeOutput method on mvNET Source returned error code 0x80131500.The component returned a failure code when the pipeline engine called PrimeOutput().The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.There may be error messages posted before this with more information about the failure.

该值太大,无法容纳缓冲区的列数据区域。 - >尝试更改输入/输出类型,但似乎无法正确。 在SQL表中,列的类型为ntext。 在.dtsx作业中,列的数据类型是Unicode String [DT_WSTR]类型,长度为4000,我猜这些是自动检测的。

导入适用于其他D3文件,因此无法确定为何这些注释字段失败。

在mv.NET Data Manager(在d3服务器上)运行查询在240秒后超时,这可能是潜在的问题吗?

任何想法如何进行?谢谢〜

2 个答案:

答案 0 :(得分:0)

最像是原因是列COMMGROUP没有正确的数据类型或源中的某些记录不适合输出类型 要查找错误记录(导致),您必须使用重定向行(组件失败组件的属性)并在某些txt.csv /或tsv文件中获取结果集。 然后检查数据

答案 1 :(得分:0)

mv.NET抛出了异常,因此我建议您致电(或要求您的经销商)致电Bluefinity支持并询问他们。你付出了支持,也可以使用它。不应该允许那些程序抛出这样的例外。

D3不会导出Unicode,这可能是一个问题。但是如果数据管理器超时那么我怀疑连接到D3有什么问题。从会话监视器打开连接监视器,并在发出请求时观察连接。我猜它要么挂了,要么更可能是它落入BASIC Debug。

确保所有与此相关的D3端程序都是Flash编译的,或者全部是Not Flashed。如果您的应用程序代码没有闪烁但MVNET.BP是。

如果您的程序在Debug中,请修复它。如果您不确定它是哪个程序,则DM中的LIST-RUNTIME-ERRORS。

如果它是MVNET.BP程序,请再次使用Bluefinity。如果您使用MVSP进行连接,那么连接监视器可能没用,您需要将其更改为IP(Telnet)连接以查看原始数据交换。