【问题标题】:TFS Database Backup Failed : There is an error in XML document - but which Doc?TFS 数据库备份失败:XML 文档中存在错误 - 但哪个文档?
【发布时间】:2017-12-29 16:01:40
【问题描述】:

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

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

[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

谢谢。

【问题讨论】:

    标签: tfs backup


    【解决方案1】:

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

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

    1. 完全删除了 Backupsets.xml 文件
    2. 使用向导重新配置备份 - 现在它根本找不到 xml 文件,它创建了一个新文件。
    3. 运行完整备份 - 成功。希望计划的备份现在也能从现在开始工作。

    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>
    

    【讨论】:

    • 我也收到了这个错误,但在我的情况下,这是由于服务器磁盘空间不足。读完这篇文章后,完全有道理。我接受了默认的 30 天备份保留天数,就我而言,这太多了。我将它减少到 14 天,并在备份服务器上释放了一些空间,现在一切正常。
    【解决方案2】:

    查看配置为放置备份的文件夹。那里会有一个 XML 文件,不记得名称,但可能类似于 BackupSets.xml

    【讨论】:

    • 谢谢迪伦。奇怪的是,我在发布之前搜索了一下,并看到了与 BackupSets.xml 文件有关的帖子,但在服务器上找不到它——那是因为它不在服务器上,而是备份在哪里!东西是空的,导致错误。我会将此标记为答案 - 现在我会弄清楚为什么它是空的:) Thx
    【解决方案3】:

    FIX(用户解决方法):

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

      • 在 TFS 管理控制台中选择计划备份,然后单击立即进行完整备份。或者根据需要使用命令行、PowerShell 脚本、API 调用。

    原因: 备份目标中的 backupsets.xml 不包含有效的 XML。

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

    受影响的产品:在 TFS2010 和 2017 年 11 月 25 日确认了 Repro,我使用 TFS2015 SP3 进行了复制:-O

    修复相当简单......一旦你了解发生了什么。 -Zephan


    MICROSOFT CODE BUGFIX/功能改进请求:

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

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

    严重性:高(数据丢失)

    • 这是一个长期存在的问题,可能会导致大量数据丢失。由于这个问题,我亲眼目睹了超过 1 个月的数据丢失,它默默地阻止了备份并使所有早期的恢复集无法使用(因为解析 BackupSets.xml 非常挑剔,我什至无法破解恢复上次成功的备份。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      相关资源
      最近更新 更多