gpt4 book ai didi

sql-server - 恢复数据库-无法访问文件,因为文件正在被另一个进程使用

转载 作者:行者123 更新时间:2023-12-01 06:23:56 25 4
gpt4 key购买 nike

我从另一台SQL Server 2005计算机上备份了数据库。我正在尝试将其还原到我的SQL Server 2008实例。

我创建了一个新数据库供还原使用,但是尝试使用以下命令(由ssms生成)进行还原时:

RESTORE DATABASE [WendyUAT] 
FROM DISK = N'D:\wanda20130503.bak'
WITH FILE = 1,
MOVE N'Wendy' TO N'D:\databases\\WendyUAT.mdf',
MOVE N'Wendy_log' TO N'D:\databases\\WendyUAT.ldf',
MOVE N'sysft_WendyFti' TO N'D:\databases\\WendyUAT.WendyFti',
NOUNLOAD, REPLACE, STATS = 10

我收到以下错误:

System.Data.SqlClient.SqlError:尝试在D:\ databases \ WendyUAT上尝试“RestoreContainer::ValidateTargetForCreation”时,操作系统返回错误“32(该进程无法访问该文件,因为该文件正在被另一个进程使用。)” .mdf”。

据我所知(使用Process Explorer等),没有其他东西正在使用该文件。我已禁用Windows Defender中的实时保护。我只是不明白为什么SQL Server认为文件正在使用,因为Windows资源管理器使我可以毫无问题地删除它,因此Windows似乎不认为它正在使用。

任何帮助将不胜感激。

最佳答案

在运行此备份之前,如何连接到应用程序中的SQL Server?您要连接到哪个数据库

无法连接到WendyUAT数据库并在要还原它时使用它-您必须显式使用其他数据库,例如之前的master运行您的SMO还原代码

我所有的T-SQL还原脚本都将始终包括:

USE [master]
GO

RESTORE DATABASE [WendyUAT] ......

因此,如果您通过应用运行此备份,请确保您明确连接到运行此T-SQL还原脚本之前的master
更新:

这是您故意做的事情,还是只是拼写错误?
MOVE N'Wendy' TO N'D:\databases\\WendyUAT.mdf',  
* **
* *
* * two backslashes here -why???
* only one backslash here...

如果仅使用单个反斜杠,是否可以正常工作?
RESTORE DATABASE [WendyUAT] 
FROM DISK = N'D:\wanda20130503.bak'
WITH FILE = 1,
MOVE N'Wendy' TO N'D:\databases\WendyUAT.mdf',
MOVE N'Wendy_log' TO N'D:\databases\WendyUAT.ldf',
MOVE N'sysft_WendyFti' TO N'D:\databases\WendyUAT.WendyFti',
NOUNLOAD, REPLACE, STATS = 10

关于sql-server - 恢复数据库-无法访问文件,因为文件正在被另一个进程使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com