我正在处理 SSIS 数据流,如下图所示。以下是流程的详细信息。 获取一些记录。 添加一个 DT_NTEXT 类型的虚拟列 这是一个正在执行存储过程的 OLE DB 命令。存储过程的输出是 XML,但类型为 NVARCHAR(MAX)。输出正在填充虚拟字段。 将 XML 从虚拟列写入表。 执行包时,目标数据库仅填充 有谁知道发生了什么以及如何将我的 XML 写入 NVARCHAR(MAX) 字段? 最佳答案 在运行了许多实验并通过 Internet 搜索后,这似乎是 SSIS 中的一个问题,因为 OLE DB 命令无法映射到 DT_NTEXT 列: SSIS 2008 OLE DB Command DT_NTEXT Output Type 作为解决方法,您可以使用脚本组件通过参数化 SQLCommand 获取 XML 值,并将输出映射到输出列(无需使用派生列转换创建列)。更新 1在搜索时,我发现这是 Microsoft 论坛中的一个 Unresolved 问题: SSIS: Cannot return XML datatype to SSIS via a stored procedure output variable Microsoft 支持团队提供了以下反馈: OLE DB clients handle XML columns (which are not part of the OLE DB spec, but SQL specific) like they would NTEXT fields. The OLE DB provider for the SQL Task currently does not fully support LOB fields ' if you store the result in an Object variable, it will return a COM object that points to the stream of data, but not the actual results (which isn't very useful). There are a couple of workarounds for this problem. 1) Cast the results to varchar, and use a String variable 2) Use an ADO.NET connection instead of OLE DB Considering the amount of work involved in changing/fixing the current behavior, and that there are workarounds available, we've decided not to fix this issue in this release.关于sql-server - OLE DB 命令 DT_NTEXT 输出类型和 XML 输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58133568/
10-13 06:11