您的位置:威尼斯官方网站 > 威尼斯官方网站登录 > 出现这样的问题可以肯定这个表是损坏了

出现这样的问题可以肯定这个表是损坏了

发布时间:2019-11-27 17:26编辑:威尼斯官方网站登录浏览(98)

     

    谬误提醒:

    消息 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;--设置为多用户模式  
    

     

    本文由威尼斯官方网站发布于威尼斯官方网站登录,转载请注明出处:出现这样的问题可以肯定这个表是损坏了

    关键词:

上一篇:没有了

下一篇:没有了