我有一个数据库,我想强制在其上进行恢复。
我勾选了以下选项:
- 覆盖现有数据库 (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_Archive
和HealthcareGovManager_AuditLog
)写入同一个目标文件(D:\CGI Data\HealthCareGovManager.ndf)。
它们必须转到单独的文件,否则 SQL Server 将遇到像您所看到的文件使用问题。