文件复制后被锁定致无法写入数据的技术问题咨询
问题原因及解决方案
ACE OLEDB驱动未正确释放资源导致独占锁
Microsoft ACE OLEDB 12.0驱动在打开Excel文件时会启用独占锁定机制。如果数据导出代码没有显式关闭并释放数据库连接、Command、DataReader等资源(比如未用using语句自动释放,也未手动调用Close()/Dispose()),驱动会持续持有文件锁,导致后续写入或手动打开操作失败。必须确保所有数据库相关对象都被正确释放。固定文件名引发的并发冲突
当前代码每次导出都复用同一个固定文件名AskDataExtractTemplate.xlsx,一旦有多个请求同时触发导出,或者上一次导出的锁未释放,新请求就会访问被锁定的文件,直接触发“被其他进程占用”的错误。解决方法是为每次生成的副本创建唯一文件名,比如添加GUID或时间戳:var temporaryFile = Server.MapPath($"~/Administration/ExtractOutput/AskDataExtractTemplate_{Guid.NewGuid()}.xlsx");文件名大小写不一致的潜在异常
连接字符串中使用的是全大写的ASKDataExtractTemplate.xlsx,但模板原文件是AskDataExtractTemplate.xlsx。虽然Windows文件系统不区分大小写,但ACE驱动在部分场景下可能因该差异出现异常,建议保持文件名大小写完全统一。第三方工具的临时锁定
服务器上的杀毒软件、文件监控工具可能会在文件复制完成后短暂锁定文件,导致后续写入失败。可以尝试将ExtractOutput目录排除出实时监控范围,作为排查手段。
内容的提问来源于stack exchange,提问作者MartinS
相关产品推荐
相关产品推荐

