数据库页已标记为 RestorePending,可能表明磁盘已损坏。要从此状态恢复,请执行还原操作。

错误提示:

消息 829,级别 21,状态 1,第 1 行
数据库 ID 15,页 (1:21826) 已标记为 RestorePending,可能表明磁盘已损坏。要从此状态恢复,请执行还原操作。

引起原因:

RestorePending一般是在进行页恢复的过程中出现的,就是在进行了restore操作之后但还没有进行recovery操作之前页的状态。

出现这样的问题可以肯定这个表是损坏了,但是在查询数据的时候如果不会查询到损坏页面的数据话是不会报错的,也就是说可以有条件的使用这个表。

如果损坏的页只有一个的话,那删除掉这个坏表故障肯定就没有了,因为一个页里面只会放一个表的数据。

损坏的直接原因就是放在磁盘上面的数据被意外的修改了或者写入的时候出错这些,可能是磁盘问题,但是IO系统可能性更大。

可以好好的检查系统日志和SQLServer的LOG,看看里面有没有关于磁盘或者IO之类的警告、报错信息,以进一步确定原因。

至于处理方法,如果表重要那就利用备份做页面还原恢复数据,不重要的话就删掉重建,

或者使用以下方式进行修复,在处理完坏页之后再对整个数据库做一次DBCC CHECKDB操作,确保没有其他的坏页。

解决办法:

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

 


 

错误提示:

执行修复命令时,可能会出现以下错误:

未处理修复语句。数据库需处于单用户模式下解决

解决办法:

此时我们需要将数据库设置成单用户模式:

右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问 -> 选择Single-> 确定。

错误提示:

当我们修复完数据库后,需要将其恢复为多用户模式,此时可能出现

数据库 'xxx' 已打开,并且一次只能有一个用户访问

 解决办法:

在设置多用户模式的时候可能会因为还有其它进程的连接导致设置无法进行,所以需要杀掉所有连接的进程。

方式一

USE master;
GO
DECLARE @SQL VARCHAR(3000);
SET @SQL = '';
SELECT @SQL = @SQL+'; KILL ' + RTRIM(SPID)
FROM [sys].[sysprocesses] AS sps
WHERE [sps].[dbid] = DB_ID('test');
SET @SQL = SUBSTRING(@SQL, 2, LEN(@SQL));
EXEC(@SQL);
GO  

方式二

DECLARE @DBName SYSNAME;
SET @DBName = 'BI_Monitor'; --这个是要删除的数据库库名      

DECLARE @KSQL NVARCHAR(1000)
DECLARE tb CURSOR LOCAL
FOR
SELECT
    KSQL = 'KILL ' + CAST([sps].[spid] AS NVARCHAR(10))
FROM [sys].[sysprocesses] AS sps
WHERE dbid = DB_ID(@DBName)--查询@DBName相关的线程  

--循环杀掉要删除数据的相关线程
OPEN tb
FETCH NEXT FROM tb INTO @KSQL
WHILE @@FETCH_STATUS = 0
BEGIN
    EXECUTE(@KSQL);
    FETCH NEXT FROM tb INTO @KSQL
END
CLOSE tb
DEALLOCATE tb  

最后再将相应数据库设置为多用户模式即可。

ALTER DATABASE [test] SET MULTI_USER;--设置为多用户模式  

 

时间: 2024-10-13 00:13:20

数据库页已标记为 RestorePending,可能表明磁盘已损坏。要从此状态恢复,请执行还原操作。的相关文章

Windows服务卸载后重新安装提示“指定的服务已标记为删除”

背景: 将一个项目做成一个windows服务,在调试的时候,需要卸载.安装该服务,但提示下面的错误:"指定的服务已标记为删除",进入服务管理界面,启动自己注册的服务,无法手动更改成启用模式(这时启动类型显示的是禁用),同样提示"指定的服务已标记为删除" 解决方法: 我关闭了服务管理窗口,问题自然解决了(必要的时候重启机器).因此,出现上述原因是运行删除服务项命令的时候,服务管理窗口未关闭引起的. 安装(我把C_JK.exe文件放在shyy文件夹下): C:\WIND

错误1075:依存服务不存在或已标记为删除的解决方法

  [现象] 在"开始->设置->控制面板->管理工具->服务"中手动开启某种服务时,出现"错误1075:依存服务不存在, 或已标记为删除",如果系统是英文版,则是"Error 1075: The dependency service does not exist or has been marked for deletion.". [解决方法] 1.双击想要开启的服务,在弹出的面板中,选择"依存关系"

版主您好,关于您的Opencv3书本的分水岭算法的分析,第337页的标记目标图有个不明确地方请教下

问题描述 版主您好,关于您的Opencv3书本的分水岭算法的分析,第337页的标记目标图有个不明确地方请教下 请问个问题,关于您的书Opencv3第337页的line(g__maskimage为什么不可以改成line(maskimage也就是直接把分水岭种子布在结果图上,而要多一个中间掩膜图步骤然后还要再寻找轮廓和绘制轮廓?直接花在结果图maskimage上,不就省了_从g_maskimage上findcontours()再drawcontours(0到maskimage这个过程了吗? 解决方案

Windows 服务卸载之后 重新安装提示 “指定的服务已标记为删除”

背景:        将一个项目做成一个windows服务,在调试的时候,需要卸载.安装该服务,但提示下面的错误:"指定的服务已标记为删除",进入服务管理界面,启动自己注册的服务,无法手动更改成启用模式(这时启动类型显示的是禁用),同样提示"指定的服务已标记为删除" 解决方法:         我关闭了服务管理窗口,问题自然解决了(必要的时候重启机器).因此,出现上述原因是运行删除服务项命令的时候,服务管理窗口未关闭引起的. 安装(我把C_JK.exe文件放在shy

[HOWTO]SQL Server2000数据库文件损坏的时候如何恢复

server|恢复|数据|数据库 数据库文件损坏的时候如何恢复 欢迎大家同我交流:小白  enhydra_boy@tom.com 欢迎转载,请保留本声明,谢谢! SQL Server2000中,如果数据库文件(非系统数据库文件)遇到错误的时候,我们该怎么办.以下是笔者以前的笔记.仅适用于非master,msdb的数据库. 说明如下: 1 建一个测试数据库test(数据库类型为完全)2 建一个表,插入点记录  create table a(c1 varchar(2))  go  insert in

win8系统如何查看磁盘已用空间

  1.如果要查看磁盘已用空间,可以直接在Win8系统下开启隐藏文件和系统文件; 2.Win8系统磁盘中包括了System Volume Information文件夹,如果我们开启了显示隐藏.查看体积; 3.可以直接右键点击System Volume Information文件,再选择"属性",在打开的属性窗口上查看到系统磁盘空间大小; 4.当系统受NTFS权限保护,即会出现磁盘空间与实际空间不符的情况,我们只需要取消NTFS权限保护即可.

Win8磁盘已用空间和文件大小不符的解决方法

  一般来说可以通过右键属性来查看Win8系统磁盘空间使用情况,而且其显示的已用空间也会和实际情况相同.但是有时候也会出现两者不相符的情况,这是怎么回事?这个时候应该怎么办呢? 解决方法: 第一.需要开启显示隐藏文件和系统文件; 第二.在磁盘中包含了类似"System Volume Information"的文件夹,就算我们开启显示隐藏,查看体积也不会将容量计算进去的,不信的话大家可以右键点击System Volume Information文件夹查看属性,一般体积为0字节, 是由于这

Ghost win8系统磁盘已用空间和实际不符怎么办

    解决方法: 1.需要开启显示隐藏文件和系统文件; 2.在磁盘中包含了类似"System Volume Information"的文件夹,就算我们开启显示隐藏,查看体积也不会将容量计算进去的; 3.不信的话大家可以右键点击System Volume Information文件夹查看属性,一般体积为0字节, 是由于这些文件夹不仅隐藏,而且受到 NTFS 权限的保护.直接全选所有内容查看属性,看到的容量大小是不包含此类文件夹的; 注:System Volume Information

u盘文件拷贝时出现磁盘已满怎么办

  u盘是我们存储和拷贝文件最常用的工具,使用起来十分的方便,便携而且容量大.一键u盘装系统虽然使用方便,不过有的时候当我们使用u盘拷贝文件会提示磁盘已满或者是空间不足等情况,这时候该怎么办呢?下面就教教大家具体的解决方法. 其实u盘磁盘已满或者是空间不足的主要原因一般有两个,其一就是u盘文件系统类型格式造成的,一般来说fat32单一文件的大小要小于4g,要及时将其改成exFAT或ntfs格式,第二个原因就是磁盘根目录文件的数量多于256致使系统出错了.具体解决方法如下: 1.①鼠标右键移动到u