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

本文提供的帮助可帮助您解决在对磁盘或磁带执行数据库备份或从磁盘或磁带还原数据库时出现的错误3266或3013。

原始产品版本:   Windows Server 2012 R2
原始 KB 数:   290787

症状

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

SQL Server 7.0 服务器:

消息3266,级别16,状态1,行1
备份设备 "devicename" 上的 Microsoft 磁带格式 (MTF) 软格式的数据库无法读取 inhibiting 随机访问。
服务器: Msg 3013、Level 16、State 1 和第1行
备份或还原操作异常终止。

SQL Server 2000 服务器:

消息3266,级别16,状态1,行1
"Devicename" 中的备份数据格式不正确。 无法追加备份,但现有备份集可能仍可用。
服务器: Msg 3013、Level 16、State 1 和第1行
备份数据库异常终止。

SQL Server 2005 服务器:

消息3013,级别16,状态1,行1
"Devicename" 结尾的备份数据格式不正确。 媒体上的备份集可能已损坏且不可用。 若要确定媒体上的备份集,请使用 RESTORE HEADERONLY。 若要确定备份集的可用性,请运行 RESTORE VERIFYONLY。 如果所有备份集都不完整,请使用 BACKUP WITH FORMAT 重新格式化媒体,这将销毁所有备份集。
服务器: Msg 3013、Level 16、State 1 和第1行

备份数据库异常终止。

原因

无法读取备份设备中的一个标记。 有很多原因可能会遇到一个错误标记错误。 其中一些原因包括以下几种:

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

  • 在创建备份的过程中,可能会发生写入失败。

    例如,网络备份过程中可能会发生连接丢失。 或者,在将写入磁盘写入 SQL server 成功之后,可能会发生将写入磁盘刷新的 IO 路径失败。

解决方法

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

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

如果在还原操作过程中出现错误消息,则可能可以通过指定文件编号从设备检索其他备份集。 例如,如果三个 (3) 备份位于一个 (1) 备份设备上,则备份集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 产品支持服务联系。