SQL-Server:无法覆盖。正在被数据库使用

标签 sql-server database-restore

RESTORE DATABASE Tes
FROM DISK = '{7522204E-0256-47B3-9864-137D6D1FD449}6' 
WITH MOVE 'Test' TO 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\Tes.mdf',
MOVE 'Test_log' TO 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\Tes.ldf'

上面的恢复命令对于新数据库工作正常,但很少有旧数据库显示类似的错误

The file 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\db1.mdf' cannot be overwritten. It is being used by database 'windb'. Msg 3156, Level 16, State 4, Line 1 File 'windb' cannot be restored to 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\db1.mdf'. Use WITH MOVE to identify a valid location for the file

我发现只有具有多个 ndf 文件的数据库才会出现此问题..

这个问题有什么解决办法吗?

最佳答案

尝试通过恢复数据库向导恢复数据库。为此,在对象资源管理器中,右键单击数据库 -> 选择恢复数据库...。在出现的窗口中,设置目标的必要详细信息。在左侧 Pane 中,选择选项文件,具体取决于您拥有的 SSMS 版本。

在显示的表格中,找到恢复为列。在每一行中,给出一个新的文件名,而不是显示的名称。例如,在您的情况下,它可能会将文件名显示为类似于 <Folder Path>\DATA\Tes.mdf 的内容。和<Folder Path>\DATA\Tes.ldf 。提供除 Tes 以外的其他名称。 (DATA 文件夹中尚不存在的名称)。

注意:文件名与数据库名称没有任何关系,但稍后可以轻松引用以提供有意义的名称,以防您必须备份或查找文件.

关于SQL-Server:无法覆盖。正在被数据库使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48005689/

相关文章:

sql-server - Azure 数据库中的 sys.event_log 选择查询超时

mysql - 具有多列连接的 SQL 查询

azure - 如何复制托管数据库?

mysql - 如何从本地系统备份表并将其恢复到 amazon RDS

css - 从复制器数据库备份恢复 wordpress 主题自定义 css

postgresql- 恢复 .dump 文件

sql - 您询问的SQL面试问题

sql-server - 日志数据库应该使用索引吗?

sql - 递归CTE在SQL Server中如何工作?

mysql - 为什么我无法在 MySQL 中创建表?