我有以下数据流:
控制:
我只想将源文件夹中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.".
数据被复制到sqlserver,但文件不会移动。
我的流程标签如下:
答案 0 :(得分:5)
这可能太明显了,但你是否尝试插入一个短暂的延迟来让数据流时间放开文件?例如,使用以下内容插入执行SQL任务:
-- Wait for 1 second
WAITFOR DELAY '00:00:01'
或者,您可以处理故障路径并重试,可能是在延迟之后。
答案 1 :(得分:4)
我偶然发现了这个链接并发布此链接以帮助其他人也来到这里。
使用脚本任务时,请确保断开与Close()的连接或使用USING()内的连接。
在任务完成后保持连接,直到整个包完成,除非您执行上述任一操作。
答案 2 :(得分:4)
如果消息引用了您的“.ispac”文件,则表示您有一个未关闭的调试。进入任务管理器并关闭调试主机。
答案 3 :(得分:3)
如果您使用SSIS连接管理器中的Excel连接。 RetainSameConnection酒店。默认情况下是这样。把它弄错,你就会全力以赴。
答案 4 :(得分:2)
如果您使用的是Excel连接,请在尝试移动/重命名文件之前,在脚本任务中使用以下代码(C#)关闭所有Excel进程。
System.Diagnostics.Process[] proc=System.Diagnostics.Process.GetProcessesByName("Excel");
foreach (System.Diagnostics.Process p in proc)
{
if (!string.IsNullOrEmpty(p.ProcessName))
{
try
{
p.Kill();
}
catch { }
}
}
答案 5 :(得分:1)
对我来说这个错误与SSIS无关,并且在最终任务没有响应BIDS之后发生
我的一个excel文件被BIDS调试器(DtsDebugHost.exe)锁定,关闭BIDS没有帮助。
最后使用http://filehippo.com/download_unlocker/向我展示了实际的储物柜,并简单地将其删除。
请注意解锁DtsDebugHost.exe后需要重新启动BIDS
答案 6 :(得分:1)
我将这个功能与等待例程一起使用:
2.1.3
答案 7 :(得分:0)
在执行文件操作之前,添加执行下面提到的行的脚本任务:
Public Sub Main()
将procList()视为Process = Process.GetProcesses()
将k设为整数
对于k = 0到procList.GetUpperBound(0)步骤k + 1
如果procList(k).ProcessName =“ EXCEL”然后
procList(k).Close()
procList(k).Dispose()
如果结束
下一步
GC.Collect()
GC.WaitForPendingFinalizers()
Dts.TaskResult = ScriptResults.Success
结束子
答案 8 :(得分:0)
我的解决方案:
答案 9 :(得分:-1)