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

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

适用于: Windows Server 2012 R2
原始 KB 编号: 290787

症状

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

SQL Server 7.0 服务器:

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

SQL Server 2000 服务器:

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

SQL Server 2005 服务器:

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

BACKUP DATABASE 异常终止。

原因

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

  • 备份所在的设备上可能发生媒体故障。

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

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

解决方法

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

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

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

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 产品支持服务。