Sql server SSIS:无法创建OLE DB访问器。验证列元数据是否有效

Sql server SSIS:无法创建OLE DB访问器。验证列元数据是否有效,sql-server,ssis,Sql Server,Ssis,我有一个SSIS包,在hes OLEDB目的地中有一个NVARCHAR(MAX)字段。该字段甚至没有被数据流填充。数据流任务失败,错误为“无法创建OLE DB访问器。请验证列元数据是否有效” 我看到了这个类似的问题:并根据it的建议检查了我的元数据。我发现SSIS将有问题的列映射为NTEXT而不是DT_WSTR。我尝试将其类型更改为长度为8000的DT_WSTR,但仍然得到相同的错误。还尝试用NULL填充字段,这是相同的错误。将“验证外部元数据”设置为false没有任何区别。有没有关于如何修复的

我有一个SSIS包,在hes OLEDB目的地中有一个NVARCHAR(MAX)字段。该字段甚至没有被数据流填充。数据流任务失败,错误为“无法创建OLE DB访问器。请验证列元数据是否有效”

我看到了这个类似的问题:并根据it的建议检查了我的元数据。我发现SSIS将有问题的列映射为NTEXT而不是DT_WSTR。我尝试将其类型更改为长度为8000的DT_WSTR,但仍然得到相同的错误。还尝试用NULL填充字段,这是相同的错误。将“验证外部元数据”设置为false没有任何区别。有没有关于如何修复的建议

谢谢。

我找到了另一种(可能更快)的方法来解决这个问题,但有点尴尬。需要注意的是,您的数据可能会被截断。使用它是否是一个好主意将取决于数据的用途


假设有问题的列输出已设置为
Unicode文本流[DT\u NTEXT]
。在第一步之后添加第二个数据转换步骤,将第一次转换的输出放入第二步,您可以从
Unicode文本流[DT_NTEXT]
映射到
Unicode字符串[DT_WSTR]
(长度=4000)。它会警告您可能会被截断,但现在您可以使用第二次转换的输出数据了。

仅针对记录,我使用了.Net目标,而该错误并未发生。

我在ACCESS数据库中遇到了同样的问题,因此我使用了派生列,并生成了所有必要的字段(DT_STR,)(长度为表列的大小,代码页为1252)。这不仅在ACCESS中有效,而且在EXCEL源代码中也有效


希望这有帮助。

我最终使用了.NET目标,但真正的问题是目标表列过时了


尝试通过将目标更改为另一个表,然后再更改为上一个表,或者直接删除该操作,然后使用正确的映射将其重新添加来刷新它们。

我也遇到类似问题。我的SQL字段从NVARCHAR(MAX)更改为NVARCHAR(4000),但给了我与您描述的相同的错误。令人难以置信的沮丧。我能够通过取消映射OLE DB目标中错误地将字段列列为NTEXT的列来修复它。然后,检查OLE DB目标之前的每个SSIS操作,并选择“显示高级编辑器…”,然后单击“刷新”。对每个优先级执行此操作后r步骤中,我重新映射了列,SSIS最终发现该列现在是一个DT_WSTR。

您要将哪个数据类型源传递到该目标列。?非常令人震惊的错误。如果我没记错,我必须在流中手动强制刷新每个源/转换的元数据以使其工作。强制刷新源意味着:选择其他数据类型table,save,再次选择old table,save。@Kishore没有源,目标中有问题的列没有源:-(@OzrenTkalcecKrznaric我甚至删除了整个数据流,并用相同的结果重新创建了它!还尝试在高级编辑器中手动更改数据类型,但没有运气。@Oscar当你说没有源时,这只是一个被忽略的未映射列,恰好位于目标表中,但实际上没有被SSIS包?如果是,您是否查看了is是否设置为允许空值?谢谢,如果选择截断,这不是一个坏主意。我刚刚回答了自己的问题,只是忘记了我自己解决问题的时间。谢谢。