2011-11-30 433 views
0

我在SSIS(仅FTR)是相当新的。SSIS包XML源

我必须使用SSIS包将XML数据从DB2数据库导入到SQL Server中。 XML在CLOB/BLOB中(取决于表),据我所知,这不是由Microsoft DB2驱动程序支持的,所以我创建了一个Java桥接器,它从客户端获取ID并返回XML。桥由Visual Basic客户端访问(预编译,并且)作为SSIS中的脚本任务执行。性能并不是当前的重点(它是7XMLs/sec)。从网桥返回的XML存储在变量中,并且由于网桥接受一个I​​D /请求,因此请求情况位于Foreach循环容器中,该容器循环处理从SQL任务接收到的ID。

在foreach循环中,有存储XML的Visual Basic客户端,从XML导入数据并存储在FlatFile目标中的数据流,以及另一个Visual Basic任务,该任务在MsgBox中显示XML )。

数据流也有三个元素:XML源,派生列,平面文件目标。 XML Source从具有修正的XML Schema(XSD)的变量中获取XML数据,并发送解析​​的数据。 Derived列将ID作为新列添加到XML数据中,FlatFile Target应将其保存(如前所述,仅用于测试紫袍)。

当我启动这个包时,一切都很顺利。在Java桥中,我看到通信和XML发送回来,数据流也没有错误地返回,但是它会引发一些警告,并且没有行写入文件。第二个VB脚本正确显示XML。

该警告与0x80047076关于来自XML文件的未处理输出(因为我只是意图存储它的一部分)。

任何想法,为什么没有任何数据写入文件输出?

SQL服务器2005 SP1 的Java SE 1.6(U26我认为) DB2 V 9

警告如下所示:

警告:0x80047076在导入的XML,DTS.Pipeline:输出“sum”(36)和组件“XML Source”(1)的输出列“text”(965)随后不会在数据流任务中使用。删除这个未使用的输出列可以提高数据流任务的性能。

我试图将一个XML文件'hard coded'添加到变量中。我还使用XML Spy检查了XML与其XSD的对比。 XML是有效的,但没有数据写入平面文件。

当我尝试调试并将该变量添加到手表中时,我得到的XML稍有修改: “-s被反斜杠,并且在标准XML标题之后,新行字符也被打印为标准换行符:\ N实施例:?

< XML版本= \ “1.0 \” 编码= \ “UTF-8 \” > \ n <扩展属性> <客户值>甲< /客户为值> ...

但是,当在MsgBox中显示XML时,XML正常打印(\ n为换行符,\“),所以我的猜测是,这只是一个未处理的,直接从C/C++/C#字符串表示。

+0

你能写一个整体警告字句?我知道他们可能非常冗长,但可能会有一些线索。 – cfrag

回答

0

您是否试图在传递到平面文件目标之前将数据可视化?

通过您的描述,听起来好像数据没有达到它。

到数据查看器添加到它,按照此链接中的步骤:http://msdn.microsoft.com/en-us/library/ms140318.aspx

+0

感谢您的提示,我在网格视图中对其进行了检查,并且没有数据正在通过,因此很明显,XML Source中会出现一些问题。任何猜测? – Mensfeld

+0

@Mensfeld由于数据流中只有3个元素,因此问题是数据源无法从文件中获取数据,或者派生列未传递元素。你有没有尝试在'数据源'和'派生列'任务之间可视化数据?如果这两者之间存在数据,那么问题出在派生列任务上。否则,问题出在数据源中。按照我上面写的 – cfrag

+0

,数据源和派生列之间没有数据,所以它必须是XML源。 XSD与用于生成XML的XSD相同,并且在运行时报告没有错误。 – Mensfeld