SSIS-该进程无法访问该文件,因为该文件正在被另一个进程使用

C S*_*per 7 .net c# sql-server ssis

我有以下数据流:

在此处输入图片说明

控制:

在此处输入图片说明

我只是想将所有数据从sourcefolder中的flatfiles复制到sql数据库,并在复制后将这些文件移动到名为Done的文件夹中。

但是当我运行它时,出现错误:

[File System Task] Error: An error occurred with the following error message: "The process cannot access the file because it is being used by another process.".
Run Code Online (Sandbox Code Playgroud)

数据被复制到sqlserver,但文件不移动。

我的过程选项卡如下:

在此处输入图片说明

小智 7

我的解决方案:

\n
    \n
  1. 转到任务管理器
  2. \n
  3. 详细信息选项卡。\n在此处输入图像描述
  4. \n
  5. 找到进程 \xe2\x80\x9cDtsDebugHost.exe\xe2\x80\x9c。
  6. \n
  7. 杀掉这个进程。此过程可能有多个实例。把他们全部杀掉。
  8. \n
  9. 重新执行SSIS包
  10. \n
\n


cri*_*fix 5

这可能太明显了,但是您是否尝试过插入一小段延迟来给数据流释放文件的时间?例如,插入具有以下内容的Execute SQL Task:

-- Wait for 1 second
WAITFOR DELAY '00:00:01'
Run Code Online (Sandbox Code Playgroud)

或者,您可以处理“失败路径”并重试,也许要延迟一下。


Kei*_*thL 5

我偶然发现了这个链接,并张贴这个链接来帮助其他人也来到这里。

使用脚本任务时,请确保使用 Close() 断开连接或在 USING() 内使用连接。

除非您执行上述任一操作,否则将在任务完成后一直保持连接,直到整个包完成。


Geo*_*giG 5

如果消息引用了您的“ .ispac”文件,则您的调试未完成。进入任务管理器,然后关闭调试主机。

  • Windows 任务管理器中调试主机的映像名称为“DtsDebugHost.exe”,描述为“SSIS 调试主机” (4认同)