![Windows Server 2003 中的文件删除有时会失败](https://linux22.com/image/481182/Windows%20Server%202003%20%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%88%A0%E9%99%A4%E6%9C%89%E6%97%B6%E4%BC%9A%E5%A4%B1%E8%B4%A5.png)
我在 Windows 2003 服务器(最新服务包等)上有几个进程出现同样的问题:删除它们应该能够删除的文件时随机失败。我编写的软件和批处理文件(从任务计划程序运行)都会发生这种情况。
例如:我有一个程序,它打开一个现有文件,然后创建一个与该文件同名但扩展名不同的日志。当我的程序处理完文件后,它会将其移动到名为“done”的子目录,然后删除该日志。但有时,我的删除会失败。机器上没有安装可能使文件保持打开状态的病毒扫描程序。我的软件是唯一对该文件进行任何操作的软件 - 哎呀,它创建了该文件。然而,文件无法删除。该软件每周处理超过 5000 个文件。有些星期我永远不会收到错误,其他星期我会随机发生一两次。这不是权限访问的问题,我感到很困惑。这不是我可以按需复制的问题;它只是有时会发生。它发生在多台服务器上,也发生在批处理文件中,也发生在我的软件中。
有人遇到过类似的事情吗?我在删除时设置了一个错误陷阱,删除时似乎出现了“拒绝访问”类型的错误。
--- 附录 另一点说明:是的,我尝试在关闭文件后延迟删除(请参阅下面的注释)。此外,我拥有的一个批处理文件执行了以下操作:
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
上述批处理文件大约有 1/10000 次会无法删除。使用 echo 创建和删除之间的延迟总是至少一分钟。很奇怪。
答案1
我在运行卷影复制服务和(如果适用)SQL Server VSS Writer(它曾经表现出一些错误)时遇到过类似的行为。如果该服务对您的服务器不重要或者您可以暂时关闭它,请尝试将其关闭,看看是否仍然可以重现问题。
答案2
如果您将文件删除延迟一秒钟,问题会消失吗?您能做到吗?如果是这样,那么这是一个潜在的锁定问题,甚至可能来自原始进程。
编辑
由于这不是原始进程的文件锁定问题,那么是否有多个进程对等相关目录?