SSIS错误退出序列容器后未释放Excel文件无法删除问题咨询
解决方案
- 调整连接管理器属性
你当前配置的两个Excel连接管理器均开启了RetainSameConnection=True,该配置会让SSIS在包的整个运行生命周期内持续持有连接句柄,是导致文件被占用的核心原因。你可以直接将该属性修改为False,每次Data Flow Task执行完成后,SSIS会自动释放对应Excel文件的连接,无需额外操作即可正常执行删除文件任务。 - 脚本任务强制释放连接
如果你的业务逻辑必须保留RetainSameConnection=True配置,可以在Delete File任务前新增一个Script Task,通过代码手动释放连接,C#示例代码如下:public void Main() { // 将数组内的名称替换为你实际的两个Excel连接管理器名称 string[] excelConnNames = { "带表头Excel连接", "无表头Excel连接" }; foreach (string connName in excelConnNames) { if (Dts.Connections.Contains(connName)) { var conn = Dts.Connections[connName]; object connObj = conn.AcquireConnection(null); if (connObj != null) { conn.ReleaseConnection(connObj); } } } Dts.TaskResult = (int)ScriptResults.Success; } - 额外排查项
如果上述操作后仍提示文件占用,可以检查两点:1. 确认所有Data Flow Task未开启针对Excel文件的永久验证,可将DelayValidation属性设为True避免预校验阶段占用文件;2. 检查包内是否有其他任务(如日志输出、临时文件读取任务)同时访问目标临时路径下的Excel文件。
内容的提问来源于stack exchange,提问作者MartinS
相关产品推荐
相关产品推荐

