sql sever还原失败:无法覆盖文件,数据库 'XX' 正在使用该文件”的问题

  • 操作背景

新建了一个测试库test,将备份的kehu库覆盖还原到test。

数据库进行还原操作:任务—>还原—>数据库,选择用于还原的备份集,点“”确定“”,就报错了。

sql sever还原失败:无法覆盖文件,数据库 'XX' 正在使用该文件”的问题_第1张图片

  • 问题现象

对数据库备份进行还原时遇到“sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL\data\kehu.MDF'。数据库 'kehu' 正在使用该文件”的问题。

sql sever还原失败:无法覆盖文件,数据库 'XX' 正在使用该文件”的问题_第2张图片

  • 问题分析

  • 报错中的kehu.mdf是什么文件呢?就是数据库创建时就生成的数据文件,每个数据库对应一个.mdf文件。

产生原因:对一个数据库备份文件在两个数据库中进行还原时,这个问题的出现主要是因为还原第一个数据库和第二个数据库的名称是一样的,而且还原时,选项中默认的数据文件和日志文件都是源数据库的,如下图:也就是说按照默认的选项,假使能够还原成功,那test的库的数据文件和日志文件为kehu.mdf和kehu.ldf,这就和源数据库本身存在的文件重名了,冲突了

sql sever还原失败:无法覆盖文件,数据库 'XX' 正在使用该文件”的问题_第3张图片

所以,应要修改这两个地方(为什么SQL sever不能自动填充为目标数据库的文件呢?这里有疑问),都修改成目标数据库的。

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test.mdf

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_log.ldf

sql sever还原失败:无法覆盖文件,数据库 'XX' 正在使用该文件”的问题_第4张图片

修改完成后,再还原就可以了。

sql sever还原失败:无法覆盖文件,数据库 'XX' 正在使用该文件”的问题_第5张图片

你可能感兴趣的:(数据库)