执行磁盘或磁带的数据库备份或从磁盘或磁带还原数据库时出错 3266 或 3013

本文有助于解决在对磁盘或磁带执行数据库备份或从磁盘或磁带还原数据库时发生的错误 3266 或 3013。

原始 KB 数: 290787

症状

对磁盘或磁带执行数据库备份或从磁盘或磁带还原时,可能会出现以下错误消息:

SQL Server 7.0 Server:

Msg 3266,级别 16,状态 1,第 1 行
无法读取备份设备“devicename”上的Microsoft磁带格式(MTF)软文件标记数据库,从而阻止随机访问。
服务器:Msg 3013、级别 16、状态 1、第 1 行
备份或还原操作异常终止。

SQL Server 2000 Server:

Msg 3266,级别 16,状态 1,第 1 行
“devicename”中的备份数据格式不正确。 无法追加备份,但现有备份集可能仍可用。
服务器:Msg 3013、级别 16、状态 1、第 1 行
BACKUP DATABASE 正在异常终止。

SQL Server 2005 Server:

Msg 3013,级别 16,状态 1,第 1 行
“devicename”末尾的备份数据格式不正确。 存储介质上的备份集可能会损坏且不可用。 若要确定介质上的备份集,请使用 RESTORE HEADERONLY。 若要确定备份集的可用性,请运行 RESTORE VERIFYONLY。 如果所有备份集都不完整,请使用 BACKUP WITH FORMAT 重新格式化介质,这会销毁所有备份集。
服务器:Msg 3013、级别 16、状态 1、第 1 行

BACKUP DATABASE 正在异常终止。

原因

无法读取备份设备中的文件标记。 你可能会遇到文件标记错误的原因有很多。 一些原因包括:

  • 备份所在的设备上可能会出现媒体故障。

  • 创建备份期间可能会发生写入失败。

    例如,网络备份期间可能会丢失连接。 或者,在向 SQL Server 报告写入磁盘成功后,IO 路径可能会在将数据刷新到磁盘时发生失败。

解决方法

若要允许 SQL Server 对备份设备执行新备份,必须使用以下命令手动删除或擦除设备:

BACKUP DATABASE mydatabase TO DISK='C:\MyDatabase.bak' with FORMAT

如果在还原作期间出现错误消息,则可以通过指定文件编号从设备检索其他备份集。 例如,如果三个 (3) 备份位于一个 (1) 备份设备上,则备份集 1 和 2 可能可用。 若要确定设备上是否存在多个备份集,请从 Query Analyzer 运行以下代码:

RESTORE HEADERONLY FROM DISK='C:\MyDatabase.bak'

每个备份集在输出中都有一个条目。 若要指示特定的备份集,请使用以下代码:

RESTORE DATABASE mydatabase FROM DISK='C:\MyDatabase.bak' WITH FILE = FileNumber

注释

FileNumber 是要还原的备份集编号。

详细信息

以下列表包含有关备份和 SQL Server 的重要说明。

  • SQL Server 在设备上检测到文件标记错误后,SQL Server 不会向设备写入其他信息。

  • SQL Server 将所有备份存储在Microsoft磁带格式中,无论是对磁盘还是磁带进行备份。 Microsoft磁带格式使用文件标记来保存备份中的块大小和块数等信息,以及有关备份的其他信息。 Microsoft磁带格式还使用文件标记来分隔备份设备中的备份。 文件标记丢失或损坏的事实表明设备上至少有一个备份无效。

  • 虽然可以从损坏的设备还原某些备份集,但必须验证还原的数据库的完整性。

  • SQL Server 将备份操作或还原操作的成功或失败的详细信息记录在 SQL Server 错误日志中以及 msdb 系统数据库中的备份历史记录表中。

  • 如果在还原事务日志或数据库备份时遇到错误 3266,请调查以下日志以了解详细信息:

    • SQL Server 错误日志
    • 备份和还原历史记录表
    • 应用程序事件日志
    • 系统事件日志

如果这些日志中没有失败的详细信息,则可能遇到了未报告失败。 如果需要帮助,应联系Microsoft产品支持服务。