在服务器 A 上的 SQL Server 2008 上备份数据库 X - 还原到服务器 B 上的 SQL Server 2012 数据库 Y

Bob*_*egg 3 sql-server backup restore sql-server-2012

我想使用不同的数据库名称将 SQL Server 2008 数据库复制到 SQL Server 2012。

  • 备份“生产”并将其复制到 SQL Server 2012 机器。
  • 使用“test”名称创建了一个新的 SQL Server 2012 数据库。
  • 试图恢复.bak文件,但 SQL Server 说“测试”正忙

top 这样做的正确方法是什么?

基本上是将 2008 年生产数据库的快照放入 2012 年测试环境中。

谢谢

鲍勃

Aar*_*and 5

在还原之前不要在服务器 B 上创建数据库。恢复一下就行了 为了做到这一点,它不必首先存在。无论数据库是否已经存在,这都应该有效(所以也许您应该考虑使用比“test”更好的名称),只需打开一个新的查询窗口:

USE master;
GO
RESTORE DATABASE test
  FROM DISK = 'E:\backup path\backup.bak'
  WITH REPLACE, RECOVERY,
    MOVE 'data_file_name' TO 'D:\data file path\test.mdf',
    MOVE 'log_file_name'  TO 'L:\log file path\test.ldf';
Run Code Online (Sandbox Code Playgroud)

但是我不知道您从哪里收到有关“忙碌”的消息 - 您是否正在使用 UI 进行恢复?别再这样做了 - 众所周知,UI 非常不适合帮助执行备份和恢复等任务。并确保您没有任何查询窗口等,其上下文设置为现有 test数据库。要将人们踢出去以便您可以恢复它,您可以使用:

USE master;
GO
ALTER DATABASE test SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)

要获取要放在MOVE参数中的文件名,请运行以下命令:

RESTORE FILELISTONLY FROM DISK = 'E:\backup path\backup.bak';
Run Code Online (Sandbox Code Playgroud)