更新

更新

我有一个数据库,我想强制在其上进行恢复。

我勾选了以下选项:

  • 覆盖现有数据库 (WITH REPLACE)

在此处输入图片描述

但是,正如预期的那样,SSMS 无法覆盖现有数据库。

当然我不想要不同的文件名;我想要覆写现有数据库。

如何强制恢复现有数据库?

对于 Google 搜索爬虫来说:

文件“%s”被“%s”(4) 和“%s”(3) 声明。WITH MOVE 子句可用于重新定位一个或多个文件。RESTORE
DATABASE 异常终止。(Microsoft SQL Server,错误:3176)

更新

脚本(在我删除数据库之前,因为我需要完成它)是:

RESTORE DATABASE [HealthCareGovManager] 
FILE = N'HealthCareGovManager_Data',  
FILE = N'HealthCareGovManager_Archive',  
FILE = N'HealthCareGovManager_AuditLog' 
FROM  DISK = N'D:\STAGING\HealthCareGovManager10232013.bak' WITH  FILE = 1,  
MOVE N'HealthCareGovManager_Data' TO N'D:\CGI Data\HealthCareGovManager.MDF',  
MOVE N'HealthCareGovManager_Archive' TO N'D:\CGI Data\HealthCareGovManager.ndf',  
MOVE N'HealthCareGovManager_AuditLog' TO N'D:\CGI Data\HealthCareGovManager.ndf',  
MOVE N'HealthCareGovManager_Log' TO N'D:\CGI Data\HealthCareGovManager.LDF',  
NOUNLOAD,  REPLACE,  STATS = 10

我使用 UI 删除了现有数据库,以便我可以使用 UI力量一个覆写现有的(非)数据库。

希望能够得到答案,以便下一个那家伙可以给出答案。

不,没有人处于数据库上下文中(来自其他连接的错误消息与此错误完全不同,并且我只有在终止其他连接后才会看到此错误)。

答案1

您有 2 个数据库文件尝试恢复到同一个物理文件。

MOVE N'HealthCareGovManager_Archive' TO N'D:\CGI Data\HealthCareGovManager.ndf',  
MOVE N'HealthCareGovManager_AuditLog' TO N'D:\CGI Data\HealthCareGovManager.ndf',

改变其中一条物理路径,错误就会消失。

答案2

看起来您正在尝试将两个文件(HealthCareGovManager_ArchiveHealthcareGovManager_AuditLog)写入同一个目标文件(D:\CGI Data\HealthCareGovManager.ndf)。

它们必须转到单独的文件,否则 SQL Server 将遇到像您所看到的文件使用问题。

相关内容