我有几个进程在服务器的Windows 2003服务器(最新的服务包等),展示相同的问题:随机失败,删除一个文件,他们应该能够删除。 这发生在我写的软件和从batch file(从任务调度器运行)。
例如:我有一个程序打开一个现有的文件,然后创build一个与文件相同的日志,除了不同的扩展名。 当我的程序完成处理文件时,它将它移动到一个名为“done”的子目录,然后删除日志。 但是,有时候,我的删除失败了。 计算机上没有安装病毒扫描程序,可能会使文件保持打开状态。 我的软件是唯一的软件,做这个文件的任何事情 – 哎呀,它创build的文件。 而且,该文件无法删除。 这个软件每周处理超过5000个文件。 几个星期,我永远不会得到错误,其他人会发生一两次,显然是随机的。 这不是一个权利访问的事情,我感到困惑。 这不是一个我可以根据需要复制的问题; 它有时会发生。 它发生在多个服务器上,从batch file和我的软件。
有没有人遇到过这样的事情? 我把一个错误陷阱删除,它似乎得到一个“访问被拒绝”types的错误删除。
— ADDENDUM另一个注意:是的,我closures文件后,试图延迟删除(见下面的评论)。 此外,我有这样的batch file之一:
if exist my_lockfile.txt goto exit_this_batch echo here is a lock file > my_lockfile.txt call someother_program call more_programs call there_is_always_a_delay_of_at_least_a_minute_here del my_lockfile.txt :exit_this_batch
10000个以上的这个batch file将不能删除。 用echo创build和del之间的延迟总是至less一分钟。 奇怪的。
我在运行Volume Shadow Copy服务时遇到了类似这样的行为,如果适用的话,SQL Server VSS Writer(它用来展示一些错误)。如果该服务对您的服务器不是至关重要的,或者如果您可以暂时closures它,请尝试把它关掉,看看你是否仍然可以重现这个问题。
如果将文件删除延迟一秒钟,问题就消失了吗? 你有能力吗? 如果是这样,这是一个潜在的locking问题,甚至可能从原来的过程。
编辑
由于它不是原始进程的文件locking问题,是否有多个进程进入相关目录?