【发布时间】:2023-04-11 09:04:02
【问题描述】:
我有用于生产的 SQL Server 2014 集群版本,而用于开发我使用 SQL Server 2014 2014 Express 版本。
我在从 .bak 恢复数据库备份时遇到问题。
每次我尝试恢复时都会收到以下错误
标题:Microsoft SQL Server Management Studio
服务器“WEBDESIGNINA\SQLEXPRESS2014”的恢复失败。 (Microsoft.SqlServer.SmoExtended)
附加信息:
执行 Transact-SQL 语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo)
操作系统在“C:\Program Files\Microsoft SQL Server\MSSQL12”上尝试“RestoreContainer::ValidateTargetForCreation”时返回错误“32(该进程无法访问该文件,因为它正被另一个进程使用。)” .SQLEXPRESS2014\MSSQL\DATA\Database_Name.mdf'。
文件“Database_Name”无法恢复到“C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\DATA\Database_Name.mdf”。使用 WITH MOVE 确定文件的有效位置。
操作系统在“C:\Program Files\Microsoft SQL Server\MSSQL12”上尝试“RestoreContainer::ValidateTargetForCreation”时返回错误“32(该进程无法访问该文件,因为它正被另一个进程使用。)” .SQLEXPRESS2014\MSSQL\DATA\Database_Name.ldf'。
文件“Database_Name_log”无法恢复到“C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\DATA\Database_Name.ldf”。使用 WITH MOVE 确定文件的有效位置。
在规划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
RESTORE DATABASE 异常终止。 (Microsoft SQL Server,错误:3634)
解决此问题的唯一方法是删除数据库然后恢复到新数据库。
我怎样才能不出错地覆盖这个数据库
【问题讨论】:
-
如果您打开了 SQL Server Management Studio,请确保关闭连接到该数据库的所有选项卡。另外:您是使用 GUI 还是 T-SQL 语句进行恢复?
-
所有选项卡都已关闭我什至停止了 ms 服务器以确保正在使用资源,此错误不断出现。唯一的出路是删除数据库并从 .bak 文件重新创建它
-
向我们展示您的恢复命令。我确定您没有使用 WITH MOVE,并且您的还原尝试覆盖现有数据库
-
如果您的数据库已经在您的 Express 服务器上,请使用 WITH REPLACE。如果要恢复到不存在的 NEW db,请使用 WITH MOVE。你现在在做什么,你试图覆盖已经存在,在线的数据库,而你没有指定要替换它
-
@marc_s 当存在与 db 的现有连接时,您会收到另一个错误:无法获得独占访问权限,因为数据库正在使用中。他所做的而不是他不使用替换/移动
标签: sql-server database database-restore