症状
假设你尝试使用 SQL Server 2017 中的 "替换" 选项还原数据库。 如果 filepath 的 "创建数据库" 中包含冗余路径分隔符,则可能会收到类似于以下内容的错误消息:
消息3634、级别16、状态1、行 LineNumber
操作系统返回错误 "32 (进程无法访问文件,因为另一个进程正在使用该文件。)" 在 "FilePath \文件名.mdf" 上尝试 "RestoreContainer:: ValidateTargetForCreation"。
消息3156,级别16,状态8,行 LineNumber
无法将文件 "FileName" 还原到 "FilePath \文件名.mdf"。 与 MOVE 一起使用,标识文件的有效位置。
消息3634、级别16、状态1、行 LineNumber
操作系统返回错误 "32 (进程无法访问文件,因为另一个进程正在使用该文件。)" 在 "FilePath \文件名.ldf" 上尝试 "RestoreContainer:: ValidateTargetForCreation"。
消息3156,级别16,状态8,行 LineNumber
无法将文件 "FileName" 还原到 "FilePath \FileName"。 与 MOVE 一起使用,标识文件的有效位置。
消息3119、级别16、状态1、行 LineNumber
规划 RESTORE 语句时发现问题。 以前的消息提供详细信息。
消息3013、级别16、状态1、行 LineNumber
还原数据库异常终止。
解决方法
当您尝试使用 "替换" 选项执行还原时,将出现此错误。 作为解决方法,你可以删除现有数据库并执行还原。
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
更多信息
关于路径,它不是备份位置的路径,它是备份头中文件的路径,可通过还原标题进行查看。 有关详细信息,请参阅 RESTORE 语句-HEADERONLY (transact-sql)。 例如:
RESTORE HEADERONLY
FROM DISK = N'FilePath\FileName.bak'
WITH NOUNLOAD;
GO
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语。