我有一个数据库,我想强制恢复它。
我检查选项:
- 覆盖现有数据库(WITH REPLACE)
但是,正如预期的那样,SSMS 无法覆盖现有数据库。
当然我不想要不同的文件名;我想覆盖现有的数据库。
如何强制恢复现有数据库?
对于谷歌搜索爬虫:
“%s”(4) 和“%s”(3) 声明了文件“%s”。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强制覆盖(非)现有数据库。
希望能有答案,以便下一个人能有答案。
不,没有人在数据库的上下文中(来自其他连接的错误消息与此错误完全不同,我只有在杀死其他连接后才看到此错误)。
您有 2 个数据库文件试图恢复到同一个物理文件。
更改其中一条物理路径,您的错误应该会消失。
看起来您正在尝试将两个文件 (
HealthCareGovManager_Archive
和HealthcareGovManager_AuditLog
) 写入同一个目标文件 (D:\CGI Data\HealthCareGovManager.ndf)。他们必须转到单独的文件,否则 SQL Server 将遇到您所看到的文件使用问题。