我正在处理SSIS数据流,如下图所示。这是流程的详细信息。
执行程序包时,目标DB仅填充<,而不是完整的XML。如果将虚拟列更改为WSTR类型,则XML将成功地完整写入表中。我需要将XML写入NVARCHAR(MAX)字段,因为XML可能很大并且超过了WSTR类型的限制。
是否有人知道发生了什么以及如何将XML写入NVARCHAR(MAX)字段?
答案 0 :(得分:1)
在运行了许多实验并在Internet上搜索之后,由于OLE DB Command无法映射到DT_NTEXT
列,因此SSIS中似乎是一个问题:
作为一种解决方法,您可以使用脚本组件通过参数化的SQLCommand获取XML值,然后将输出映射到输出列(无需使用派生的列转换来创建列)。
在搜索时,我发现这是Microsoft论坛中的一个公开问题:
Microsoft支持团队提供了以下反馈:
OLE DB客户端像处理NTEXT字段一样处理XML列(这不是OLE DB规范的一部分,而是特定于SQL)。 OLE DB SQL Task的提供程序当前不完全支持LOB字段 '如果将结果存储在Object变量中,它将返回一个COM 指向数据流的对象,而不是实际结果 (不是很有用)。
有两个解决此问题的方法。
1)将结果转换为varchar,并使用String变量
2)使用 ADO.NET连接而不是OLE DB考虑更改/修复当前问题涉及的工作量 行为,并且有可用的解决方法,我们决定不 在此版本中解决此问题。