转】,操作系统已经向SQL Server 返回了错误21(设备未就绪
在文件'G:\LedDB\LedDB.mdf' 中、偏移量为0x00000001a9a000 的位置执行 读取 期间,操作系统已经向SQL Server 返回了错误21(设备未就绪。)。SQL Server 错误日志和系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重系统级错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅SQL Server 联机丛书。
说明: 执行当前Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 在 文件'G:\LedDB\LedDB.mdf' 中、偏移量为0x00000001a9a000 的位置执行 读取 期间,操作系统已经向SQL Server 返回了错误21(设备未就绪。)。SQL Server 错误日志和系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重系统级错误条件,必须立即纠正。请执行完整的数 据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅SQL Server 联机丛书。
解决方法
重启SqlServer服务,确保没有其他链接连接到当前错误数据库
执行
usemaster
declare@databasename varchar(255)
set@databasename='leddb'
execsp_dboption @databasename, N'single', N'true'--将目标数据库置为单用户状态
dbcccheckdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcccheckdb(@databasename,REPAIR_REBUILD)
execsp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态
即可
相关资料:
MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。
1. DBCC CHECKDB
重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。
use master
declare @databasename varchar(