TFS 2018定时备份失败:BackupSets.xml被SYSTEM锁定求助
解决TFS 2018拆分架构中BackupSets.xml被SYSTEM进程锁定的备份失败问题
我之前处理过好几起类似的TFS 2018拆分架构备份锁定问题,给你几个逐步排查和解决的方案,不用总依赖重启服务器:
一、先定位SYSTEM进程锁定的具体诱因
- 用Process Explorer深挖锁定细节:找到锁定BackupSets.xml的SYSTEM进程,右键选择Properties,切换到Threads标签,查看哪个线程在持有锁。大概率是Windows的**Volume Shadow Copy Service (VSS)**相关线程,或是TFS后台任务与备份任务冲突导致的。
- 检查任务时间重叠情况:TFS自带的定时备份和Windows Server的系统备份(比如Windows Server Backup)如果同时触发,很容易引发VSS快照冲突,进而锁定BackupSets.xml。你可以去TFS管理控制台看备份计划,再对照Windows任务计划程序里的系统备份任务,确保两者执行时间完全错开至少1小时。
二、调整TFS备份的核心设置
- 修改备份临时文件路径:默认情况下TFS备份可能直接在备份磁盘生成临时文件,SYSTEM进程可能因VSS快照持续占用这些文件。你可以在TFS管理控制台的备份设置里,指定一个应用服务器本地的非备份磁盘作为临时目录,让备份先在本地生成文件,再复制到备份磁盘。
- 临时关闭备份验证选项:有时候备份后的验证步骤会导致文件被长时间锁定,你可以先关闭这个选项测试备份是否能正常完成。如果恢复正常,再逐步排查验证环节的问题,比如备份磁盘是否给TFS服务账户开放了读取验证文件的权限。
三、修复VSS服务的异常状态
- 重置VSS相关组件:以管理员身份打开命令提示符,依次执行以下命令重新注册VSS组件,修复服务异常:
net stop vss net stop swprv regsvr32 /s ole32.dll regsvr32 /s oleaut32.dll regsvr32 /s vss_ps.dll vssvc /register regsvr32 /s /i swprv.dll regsvr32 /s /i eventcls.dll regsvr32 /s es.dll regsvr32 /s stdprov.dll regsvr32 /s vssui.dll regsvr32 /s msxml.dll regsvr32 /s msxml3.dll regsvr32 /s msxml4.dll net start vss net start swprv - 清理冗余VSS快照:打开磁盘管理,右键备份磁盘选择属性,切换到卷影副本标签,查看是否有大量旧快照堆积。如果有,删除多余快照释放资源,避免快照占用导致文件锁定。
四、检查TFS服务账户的权限配置
- 确保TFSService账户对备份磁盘有完全控制权限:有时候SYSTEM进程锁定文件,是因为TFS服务账户没有足够权限完成文件释放,导致SYSTEM代为持有锁。你可以在备份磁盘的安全设置里,添加TFSService账户,赋予其包括子文件夹和文件在内的完全控制权限。
- 验证SQL Server服务账户的备份权限:数据库服务器上的SQL Server服务账户,对备份目标路径(如果是网络共享)要有读写权限,避免备份过程中因权限问题导致文件未正常关闭。
五、升级TFS 2018到最新累积更新
TFS 2018的后续累积更新(比如CU10及以后版本)修复过不少备份相关的锁定问题。你可以核对微软官方的TFS更新日志,确认是否有针对BackupSets.xml锁定的修复项,然后升级到最新的累积更新(升级前记得重启服务器后手动做一次完整备份)。
如果以上方案都试过仍未解决,你可以手动执行一次TFS备份,同时用Process Monitor跟踪文件操作,看看具体哪个步骤导致SYSTEM进程锁定了BackupSets.xml,这样能更精准定位问题。
内容的提问来源于stack exchange,提问作者Dave White
相关产品推荐
相关产品推荐

