TFS数据库备份失败:XML文档中存在错误 - 但是哪个文档?

时间:2014-08-14 08:47:50

标签: tfs backup tfs2012

我们的夜间TFS 2012备份刚刚开始失败。直接通过TFS Express管理控制台运行时也会失败。

哪个文件实际上是指以下错误?如果我能找到它,那么我应该能够修复" Root元素缺失"错误:)

[13/08/2014 23:00:00] [Info] Full database backup job
[13/08/2014 23:00:00] [Info] Getting backup lock
[13/08/2014 23:00:05] [Error] 
Exception Message: There is an error in XML document (0, 0). (type   InvalidOperationException)
Exception Stack Trace:    at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   at Microsoft.TeamFoundation.Admin.BackupSets.Load(String folder)
   at Microsoft.TeamFoundation.Admin.Jobs.FullDatabaseBackupJobExtension.Run(TeamFoundationRequestContext requestContext, TeamFoundationJobDefinition jobDefinition, DateTime jobQueueTime, String& resultMessage)

Inner Exception Details:

Exception Message: Root element is missing. (type XmlException)
Exception Stack Trace:    at System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlReader.MoveToContent()
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderBackupSets.Read7_BackupSets()

[13/08/2014 23:00:05] [Info] Full Backups Failed

感谢。

3 个答案:

答案 0 :(得分:6)

Dylan回答了我原来的问题,在哪里可以找到错误的未指定的xml文件,但万一它可以帮助其他人......

Backupsets.xml文件为空。为什么这是我不知道... 尝试通过TFS Express管理控制台配置备份也失败并出现相同的错误,因此我

  1. 完全删除了Backupsets.xml文件
  2. 使用向导重新配置备份 - 现在它根本找不到xml文件,但它创建了一个新文件。
  3. 完全备份 - 这是成功的。希望预定的备份现在也可以使用。
  4. NB新创建的Backupsets.xml文件(在第一次完整备份之前):

    <?xml version="1.0"?>
    <BackupSets xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Version>1</Version>
      <BackupSets />
    </BackupSets>
    

答案 1 :(得分:3)

查看配置备份的文件夹。那里会有一个XML文件,不记得名字,但也许像BackupSets.xml

答案 2 :(得分:0)

FIX(用户解决方法):

  1. 重命名备份目标文件夹中的文件 BackupSets.xml
  2. 重新运行完全备份*

    • 在TFS管理员控制台中,选择“预设备份”,然后单击“立即执行完全备份”。或者根据需要使用命令行,PowerShell脚本,API调用。
  3. 原因:备份目标中的backupsets.xml不包含有效的XML。

    • 为什么这会导致失败?备份向导打开backupsettings.xml,然后调用XML反序列化函数System.Xml.Serialization.XmlSerializer.Deserialize准备添加新条目。无效的XML内容(包括空/零字节或纯文本内容)将导致反序列化异常。

    产品受到影响: Repro在TFS2010和2017-11-25确认我曾与TFS2015 SP3重新合作:-O

    修复是相当简单的......一旦你了解了正在发生的事情。 -Zephan

    MICROSOFT CODE BUGFIX /功能改进要求:

    backupsets.xml的BACKUP向导异常处理反序列化或解析异常。

    • 如果XML反序列化错误然后关闭backupsets.xml,请将其重命名为backupsets -YYMMDD -hhmm-corrupt-backup.xml,然后跳转到找不到backupsets.xml文件的功能。

    严重性:高(数据丢失)

    • 这是一个长期存在的问题,可能导致重大数据丢失。我个人看到由于这个问题导致数据丢失超过1个月,这些问题无声地阻止备份并使所有早期的恢复集都无法使用(因为解析BackupSets.xml非常挑剔我甚至无法恢复上次成功的备份。)