SSIS Foreach 循环容器读取文件并加载到数据库中,在执行过程中崩溃

SSIS Foreach Loop Container to read files and load into DB getting crash during execution

我正在尝试使用 Foreach Loop Container & DataFlow task in 将多个文件从一个位置加载到数据库中]SSIS.

当我尝试执行程序包时它崩溃了。它没有给出任何错误消息,每当我执行程序包时它就会崩溃并立即关闭 visual studio 应用程序。我必须在任务管理器中终止调试任务,以便下次执行包。

所以我尝试了以下步骤:

  1. 我使用 FileSystem 任务 而不是 DataFlow 任务 将所有文件从源移动到存档目录,运行 很好,没有任何问题。

  1. 运行 DataFlow 任务 分别将单个文件加载到数据库中, 也执行成功了。

我不知道这里出了什么问题。任何帮助,将不胜感激!谢谢!


截图

所有屏幕截图对我来说都很好。我会给出一些提示来尝试找出问题所在。

由于文件系统任务执行没有任何问题,所以ForEach Loop Container也没有问题。您可以尝试删除 OLE DB Destination 并将其替换为虚拟任务以检查它是否导致问题。如果问题仍然存在,则意味着 平面文件源 可能是原因。

值得尝试的事情

  1. 确保 TargetServerVersion 准确无误。您可以在以下文章中了解有关此 属性 的更多信息:How to change TargetServerVersion of my SSIS Project
  2. 尝试 运行 32 位模式下的程序包。您可以通过将 Run64bitRuntime 属性 更改为 False 来执行此操作。您可以在以下文章中了解有关此 属性 的更多信息:Run64bitRunTime debugging property
  3. 运行 Visual Studio 处于安全模式。您可以使用以下命令 devenv.exe /safemode.

解决方法 - 使用批量插入

因为您要将平面文件插入 SQL 数据库而没有执行任何转换。为什么不使用SSIS Bulk Insert Task。您可以参考以下 step-by-step 指南了解更多信息:

如官方文档所述,请确保满足以下要求:

  • 服务器必须有权访问文件和目标数据库。
  • 服务器运行大容量插入任务。因此,任务使用的任何格式文件都必须位于服务器上。
  • 批量插入任务加载的源文件可以与插入数据的 SQL 服务器数据库位于同一台服务器上,也可以位于远程服务器上。如果文件位于远程服务器上,您必须在路径中使用通用命名约定 (UNC) 名称指定文件名。