SSIS 错误:VS_NEEDSNEWMETADATA

新手上路,请多包涵

我目前正在使用 Visual Studio 2015(在 BIDS 2008 中制作)更新我们所有的 ETL,并将它们重新部署到在 SQL Server 2016(最初是 2008R2)上运行的新报告服务器上。

在更新其中一个 ETL 并尝试在新服务器上运行时,出现此错误:


包执行失败。步骤失败。

有时它也会产生这个错误:

来源:加载事实表 SSIS.Pipeline 描述:“复制到事实表”验证失败并返回验证状态“VS_NEEDSNEWMETADATA”。


我尝试删除并重新添加 OLEDB 目标、连接字符串并打开列映射以刷新元数据。我还重新创建了整个数据流任务,但我仍然遇到同样的错误。

该软件包在我的本地机器上运行良好。

更新:

我开始拆开包装并只运行其中的一部分以尝试缩小哪个部分失败。加载到临时表似乎失败,但我找不到原因。

我最终决定尝试重新创建整个事物。重新创建整个包后,仍然没有运气。下面的图片来自服务器本身的事件查看器,但它没有给我任何新信息。

在此处输入图像描述

来自事件查看器的包错误

原文由 Jonathan Porter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

我终于找到了问题,这就是我的做法。

因为我从 SSMS 获得的错误消息不是很有洞察力,所以我首先打开了我的远程桌面并登录到服务器。然后我转到管理工具>事件查看器,然后转到 Windows 日志>应用程序,查看失败的事件是否会提供更多详细信息。

在此处输入图像描述 在此处输入图像描述 它仍然没有给我太多。

我采取的下一步是从命令行运行包 因为消息应该更详细。打开cmd,将目录更改为我的包所在的目录,然后…

 DTEXEC /FILE YourPackageName.dtsx

最后,此处的错误消息显示包试图写入的表中缺少列。我添加了那些列,瞧!

原文由 Jonathan Porter 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可能需要强烈键入您的源查询。

例子:

如果您的 DestinationDB 有一个 FullName 字段 Nvarchar(255) 并且在您的源查询中,您有

从…中选择名字+姓氏作为全名

尝试这个:

选择 CONVERT(NVARCHAR(255),firstname + lastname) 作为 Fullname from…

因此,如果您从 db 到 db 并且两者都是 nvarchar(255) 我没有这个问题,但是如果您在查询中连接字段,请指定数据类型和长度。

原文由 TonyE 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进