我有一个SQL Server数据库,其中将数据和日志文件存储在外部USB驱动器上。当我不在办公室的时候,我在办公室的主开发机器和我的笔记本电脑之间切换外部驱动器。在台式机和膝上型计算机之间移动时,我尝试使用sp_detach_db和sp_attach_db。我发现这可以在桌面上正常工作-我可以分离和重新连接数据库那里没有问题。但是在笔记本电脑上,我不能重新连接数据库(数据库实际上是在笔记本电脑上创建的,第一次分离发生在那里)。当我试图重新连接到笔记本电脑时,我会得到以下错误:
无法打开物理文件"p:\SQLData\AppManager.mdf“。操作系统错误5:“5(未找到错误)”
我发现很多对此错误的引用都指出这是一个权限问题。因此,我沿着这个路径,确保Server服务帐户具有适当的权限。我还在同一条路径上创建了一个新的数据库,并且能够成功地分离和重新连接它。所以我确信许可不是问题所在。
进一步研究发现,即使在SQL Server服务停止时,我也不能重命名、复制或移动数据文件,因为Windows认为它们是锁定的。没有显示任何锁定文件的进程。
如何找到锁定文件的内容并将其解锁。
我已经验证了这些数据库没有出现在SSMS中,因此Server仍然认为它们不存在。
更新18/09/2008
到目前为止,我已经尝试了所有建议的答案,但都没有成功。然而,尝试这些建议有助于澄清情况。我可以核实以下几点:
注意:在分离数据库之后,我尝试在移动外部驱动器之前停止Server服务和关闭Server -仍然没有成功。
所以在这个阶段,我能做的就是在台式机和笔记本电脑之间移动数据,把数据备份到外部驱动器上,移动外部驱动器,从备份中恢复数据。工作正常,但花费更多的时间,因为数据库是一个合理的大小(1gb)。无论如何,这是我在现阶段唯一的选择,即使我试图避免走这条路。
发布于 2009-07-17 05:48:23
虽然听起来很疯狂,但您是否尝试通过右键单击/ properties / security手动授予自己对文件的权限?我认为Server 2005将把独立文件的权限专门设置给执行分离操作的主体(可能是您的帐户,也可能是运行Server服务的帐户),其他人也不能操作该文件。为了解决这个问题,在移动或删除MDF和LDF文件之前,我必须手动为自己授予文件权限。还请参阅onupdatecascade.com的博客文章
发布于 2008-09-17 00:22:11
你能复制这些文件吗?我很想知道你是否可以把这些文件拷贝到你的笔记本电脑上,然后把它们附加到笔记本电脑上。我想这也是某种权限错误,但听起来您已经完成了修复这个错误的工作。
文件上有任何属性吗?
更新:如果你不能复制文件,那么一定有东西在锁定它们。我会查看拆物柜,我还没有试过,但听起来是一个很好的起点。您还可以尝试在文件权限下获取文件的所有权。
发布于 2008-09-17 00:15:36
当您在企业管理器( Enterprise )或SSMS中时,您能看到您正在谈论的数据库的名称吗?可能会有一个剩余的数据库处于一种奇怪的状态。我会确保你在安全的地方有备份或中密度纤维板的副本。如果是这样的话,可以尝试删除数据库,然后重新附加它。
https://stackoverflow.com/questions/78560
复制相似问题