SQL Server恢复备份导致错误

我有一个开发数据库(Windows Server 2008上的SQL Server 2005),我需要移动prod(Windows Server 2003上的SQL Server 2000)。 我的过程如下:

  1. login到开发,打开SQL Server Management Studio
  2. 右键单击数据库| 任务| 备份。 保留所有默认选项(完整备份等)
  3. 将.bak文件本地移动到prod(无networking驱动器),login到prod,打开SQL Server企业pipe理器。
  4. 右键单击数据库节点| 所有任务| 还原数据库。
  5. 将还原更改为数据库以反映相同的数据库名称。
  6. 点击单选button“从设备”。 点击“select设备”
  7. 单击还原从:添加…,浏览到.bak文件(小 – 仅6mb)

现在我准备好恢复数据库了,所以我点击确定,出现以下错误:

“设备上的媒体系列'E:… bak'不正确,SQL Server无法处理这个媒体系列,RESTORE DATABASE正在终止exception。

这个错误是直接的。

我已经尝试了一些不同的变化 – 将数据库恢复到具有不同数据库名称和日志文件名称(源自它的位置)的开发机器,创build一个空的数据库,使用与之前文件相同的物理path,并尝试还原到该数据库,制作几个不同的.bak文件,并确保在将其上传到产品之前进行validation。 我知道一个事实,.mdf和.ldf文件的目录存在于prod上,尽pipe文件本身不存在。 如果之前,我单击确定进行还原,转到选项选项卡,而是我得到以下错误:

错误3241:设备'E:… bak'上的媒体系列不正确。 SQL Server不能处理这个媒体家族。 RESTORE FILELIST正在exception终止。

任何人有任何明智的想法?

    MSSQL2008中的备份头与MSSQL2005中的不同,这可能是问题的根源。 尝试导出数据库而不是备份还原范例,或者在您的DEV服务器上设置MSSQL2008。

    正如Mike Dimmick所说 – SQL 2000不能识别SQL 2005备份(就像Word 2000不能识别2007的DOCX文件)。 因此,您必须以较低的通用分母格式(例如SQL脚本)来迁移数据。 尝试数据库发布向导 ,它是SQL Server主机工具包的一部分,它为模式和数据都生成单个SQL文件。

    您可以在SQL Server系列中向前移动备份,即2000到2005或2008,但不能向后移动:无法在SQL Server 2000上恢复SQL Server 2005备份。

    这可能是一个权限问题,使您在尝试恢复时不会创build文件。 尝试在目标上创build一个与您想要的名称相同的新数据库,然后在其顶部进行恢复。

    另外,如果您尝试从外部硬盘驱动器或networking共享中恢复备份,请尝试将备份文件复制到本地计算机,然后再尝试恢复。

    默认情况下,有两个来自SQL Server 2005的对象浏览器。我想你正在尝试在服务器/ sqlexpress对象。 尝试恢复到另一个。

    (叹了口气。)啊, 这就是问题所在。

    我有SQL Server 2008 SP1在远程PC上运行。 我备份了它的数据库,但无法从我的本地副本SQL Server 2008从.bak文件恢复。

    正如[Yini]所说,这是我的SQL Server 2008副本打开我的本地PC上的SQL Server 2005实例,而不是我的SQL Server 2008实例。 天才。

    我完全同意[Yini] – 公平的说,你不能将SQL Server 2008备份恢复到2005年的实例,但微软至less可以给我们一个体面的错误信息。

    “设备上的媒体家族'D:\ DatabaseBackup_21_02_2011.bak'被错误地组成,SQL Server无法处理这个媒体家族。

    我的备份没有错误地形成。 即使在运行SQL Server 2008 SP1时,它也不能恢复到SQL Server 2005实例中

    这是否真的很难把这个错误信息…………?

    一些想法:

    • 大约你正在恢复的数据库大小是多less?
      关于这个错误的唯一支持文章是针对SQL 2000并讨论大型日志文件。 虽然不在SQL 2000上,但如果特别大,可能会首先尝试减小日志的大小。

    • 你能否将数据库恢复到你的开发服务器(作为不同的数据库名称,不同的文件)? 这将certificate文件本身就SQL 2005而言是否正确。

    • 你能否从该开发服务器恢复任何其他数据库到Prod?

    嘿大家,正如迈克build议我会推荐数据库发布向导,它做了一个美丽的工作。

    这是我最初使用的解决方法,我不完全build议 – 这似乎有点贫民窟

    1)在prod上创build数据库,创build一个具有适当权限的db用户,在防火墙上打开允许远程访问的端口
    2)从SQL Server Management Studio的开发中,右键单击数据库 – >任务 – >导出数据。 select目的地时,请务必指定端口xxx.xxx.xxx.xxx,1764。
    3)select要传输的所有表格,点击下一个100次,完成。

    警告:这不会复制存储的过程。
    警告:这不会复制int列的标识

    更新:它看起来像你不能从2005年到2000年。我发现以下post链接文本 – 这听起来像你可以使用我的方法上面,但你也想脚本的所有对象,然后运行在2000年。