操作系统已经向SQL Server 返回了错误21

当操作系统返回错误21(设备未就绪)时,SQL Server无法正常读取数据库文件。这可能导致数据库完整性受到威胁。为解决此问题,建议重启SQL Server服务,确保没有其他连接,然后将数据库置于单用户模式,执行DBCC CHECKDB修复命令,可能涉及REPAIR_ALLOW_DATA_LOSS或REPAIR_REBUILD选项。完成修复后,将数据库恢复为多用户模式。如果DBCC CHECKDB仍报错,可考虑DBCC CHECKTABLE修复特定表。
摘要由CSDN通过智能技术生成

转】,操作系统已经向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'--将目标数据库置为多用户状态

即可
操作系统已经向SQL Server 返回了错误21

相关资料:

MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。

  1. DBCC CHECKDB
重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。

use master
declare @databasename varchar(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值