在一次中止的 TFS 导入(2008 到 2010)期间,我设法“丢失”了 2008 年的一个数据库。该数据库在 Management Studio 中不可见,但 SQL Server exe 在 .mdf 文件中有一个句柄(根据 UnLocker),它说无法附加它,因为该文件正在使用中,并且它无法附加该文件的副本(在 SQL Server 停止时创建),因为它说已经附加了一个同名的数据库。
鉴于我使用的是一直使用的相同 TFS 管理员帐户,并且始终能够看到数据库,为什么这个数据库丢失了,更重要的是,我如何再次恢复它?
答案1
这真是很奇怪!
您是否有可能正在运行另一个 SQL Server 命名实例并且该实例已附加数据库?
您是否以系统管理员或 sa 身份登录到 sql server 并且仍然看不到数据库?如果您不是 sa 并且您不是该数据库中的用户,那么您可能无法使用当前登录名查看它
。 查看任何数据库您当前的登录权限可能被拒绝,或者公共角色的权限可能已被撤销。
解决此问题的最简单方法是让您的 TFS 用户帐户(登录名)成为数据库中的用户。
答案2
听起来可能很傻,但是...您尝试过重新启动 SQL Server 服务吗?
有时文件锁会毫无明显原因地卡住。
答案3
您是否有权查看所有数据库活动,即查看与该数据库的开放连接?如果您可以看到针对该数据库名称的进程,则可以尝试终止该进程。
我曾经遇到过这种问题,数据库被 Management Studio 锁定,但没有明确的原因,我通过终止 SPID 解决了这个问题,这样我就可以继续进行我正在尝试进行的维护。
尝试在查询窗口中运行 sp_who2。