我有一个SQL Server数据库在一个外部硬盘上。我忘了分离DB。我不再需要它了,但我无法删除或使它脱机。
当我尝试删除数据库或使其脱机时,我得到以下错误。
消息823,级别24,状态2,第7行
在读取文件“E:\Kenya Air\Monet -Paulus.mdf”中偏移量0x 00000000012000处的数据时,操作系统向SQL Server返回了错误21(设备未就绪。)。SQL Server错误日志和系统事件日志中的其他消息可能提供了更详细信息。这是一个严重的系统级错误,威胁到数据库完整性,必须立即更正。请完成完整的数据库一致性检查(DBCC CHECKDB)。导致此错误的因素有很多;有关详细信息,请参阅SQL Server联机丛书。
我尝试运行DBCC CHECK,但得到相同的错误。
4条答案
按热度按时间bqucvtff1#
尝试使数据库脱机,然后再联机。
然后过一段时间再将其恢复联机
7qhs6swi2#
我将尝试使用SQL的系统存储过程
sp_detach_db
。删除数据库将从SQL Server示例中删除该数据库,并删除该数据库使用的物理磁盘文件。如果删除数据库时该数据库或其任何一个文件处于脱机状态,则不会删除磁盘文件。可以使用Windows资源管理器手动删除这些文件。若要从当前服务器中删除数据库而不从文件系统中删除文件,请使用sp_detach_db。
操作系统准确地报告了您在问题中所说的内容:在删除数据库时,SQL Server会尝试从一个不再存在的设备中删除文件。因此,根据定义,数据库不能被“删除”。但也许可以将其分离,因为这只影响系统对可用数据库列表的内部定义。
wfsdck303#
不要尝试将数据库设置为离线然后再重新在线-这最终会使事情变得更糟。
停止SQL Server -移动相应的数据库文件(数据和日志文件)到其他位置。再次启动SQL Server-最终数据库将指示(恢复挂起)-现在从SQL Server中删除数据库。接下来将数据库文件附加回服务器,你应该没问题-除非文件物理损坏。我已经看到这个问题很多次了-特别是在SQL Server设置为自动启动且在系统重新启动前未以协调方式关闭的虚拟化SQL示例上。数据或日志文件的瞬时连接问题可能导致此问题。如果系统多次显示此问题,请将SQL Server设置为手动启动。
3hvapo4f4#
我遇到了同样的问题,甚至当我想让数据库脱机时,它也给了我这个错误。但是这个问题通过重新启动SQL得到了解决。