SQL Server:偏移量为 0x000.....操作系统已经向 SQL Server 返回了错误 21的解决方法

问题描述:
‘F:\DB\Ly_XXX.mdf’ 中、偏移量为 0x0000000009c000 的位置执行 读取 期间,操作系统已经向 SQL Server 返回了错误 21(设备未就绪。)。

错误分析:
这是因为数据库没有挂起的原因(由于硬盘等移动而导致的),将SQL Server重新启动即可。
挂起(等待,阻塞)进程在操作系统中可以定义为暂时被淘汰出内存的进程,机器的资源是有限的,在资源不足的情况下,操作系统对在内存中的程序进行合理的安排,其中有的进程被暂时调离出内存,当条件允许的时候,会被操作系统再次调回内存,重新进入等待被执行的状态即就绪态,系统在超过一定的时间没有任何动作。

解决方法:
在控制面板——管理工具——服务,找到SQL Server (XXX)进行重新启动

补充:
有些电脑(常见win10系统)SqlServe服务重启后恢复正常,但电脑关机后 再此打开又会出现相同的问题。经多方查找,最后发现是由于系统默认开启‘设备加密’造成的。

解决方法:

 

将加密功能关闭即可正常使用。

网上还有其他的解决方方法,本人没有测试,贴出来供大家参考:

1、解除数据库文件所在磁盘的 BitLocker 加密或者移至未加密磁盘中;

2、关闭 Windows 的“快速启动”功能(电源选项 -> 选择电源按钮的功能 -> 取消“启用快速启动(推荐)前面的勾”)

3、将 SQL Server 服务的启动类型设置为“自动(延迟启动)”

DBCC CHECKDB用法详解

手工修复数据库

1、快速修复
DBCC CHECKDB ('数据库名', REPAIR_FAST)     
2、重建索引并修复
DBCC CHECKDB ('数据库名', REPAIR_REBUILD)
3、如果必要允许丢失数据修复
DBCC CHECKDB ('数据库名'', REPAIR_ALLOW_DATA_LOSS)

如果出现错误:未处理修复语句。数据库需处于单用户模式下。

可以先启用单用户模式,方法如下执行存储过程:

Use master
go
sp_dboption 数据库名, single, true

--更改成单用户
     alter   database   test   set   single_user   with   rollback   immediate  

--还原数据库为多用户模式
   alter database test set multi_user   with rollback immediate

############################################################
###########################################################

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值