在同一台服务器上恢复具有不同名称的数据库

Jun*_*dba 6 sql-server backup restore

我需要一个Carers在同一台服务器上调用的实时数据库的副本以进行测试。测试数据库名称将为Carers_Test.

我使用 SSMS 备份了 Carers。并尝试使用 GUI 恢复它。当我按照这些步骤操作时,我唯一改变的是数据库的名称。

但恢复失败并出现错误:

无法获得独占访问权限,因为数据库正在使用中。

我不想对当前的实时数据库做任何事情,为什么数据库正在使用中?我尝试在本地主机上恢复相同的备份,并且成功恢复。当我尝试使用实时数据库在同一台服务器上恢复它时,我收到此错误。

请有人帮助我...我快疯了!

Kri*_*rte 8

解决起来真的很简单。您正在尝试覆盖您需要使用的move选项的原始文件,如下所示:

restore database <Your-Database> from disk ='<backup-file-path>' 
with move 'mdf_file_name' to '<new-path>',
move 'log_file_name' to '<new-path>'
Run Code Online (Sandbox Code Playgroud)

顺便从备份中发现文件名,使用以下命令:

restore filelistonly from disk ='<backup-file-path>' 
Run Code Online (Sandbox Code Playgroud)


Con*_* S. 7

我认为这还取决于您使用的是哪个版本的 Management Studio。在 2016+ 中,当您更改目标数据库的名称时,SSMS 会更改还原为文件的名称(请参见屏幕截图)。我似乎记得在旧版本的 SSMS 中您必须手动更改文件的名称,否则它们会与现有文件冲突。

另外,要非常小心选项“覆盖现有数据库”和“还原前进行尾日志备份”。这两个都应该是未经检查的!

最后,如果我是你,我会在尝试恢复生产数据库之前立即备份生产数据库。

在这里,我更改了新数据库的名称: 第 1 页

此处新文件的名称由 SSMS 更改。您可能需要手动更改这些。无论如何,请检查 SSMS 正在尝试做什么: 第2页

这里两个重要的选项未选中: 第 3 页