zoukankan      html  css  js  c++  java
  • 对置疑数据库的恢复过程

    10月31号,在一次大量数据的操作过程中,因突然停电造成数据库文件损坏,数据库为SqlServer2000,打开企业管理器时,此库文件显示为置疑,将服务器重启后,此文件已不显示在企业管理器中,再次附加,提示出错。此时库中的数据最多的一个表有330万数据,因有图片,数据文件较大,达192G。
    首先将此库文件及日志文件改名后,在企业管理器内新建一个与损坏文件同名的库文件,并新建在同一个目录下,停止数据库服务,将新建的库文件及日志文件删除,再将原来的损坏文件名称改回,重启数据库服务,打开企业管理器,此库文件显示在企业管理器中,状态为置疑;
    在网上搜到一段对置疑数据库处理的代码,查询分析器中执行,代码如下:

    USE MASTER
    GO

    SP_CONFIGURE 
    'ALLOW UPDATES',1 
    RECONFIGURE WITH OVERRIDE
    GO

    UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
    Go

    sp_dboption 
    '置疑的数据库名''single user''true'
    Go

    DBCC CHECKDB('置疑的数据库名'
    Go

    update sysdatabases set status =28 where name='置疑的数据库名'
    Go

    sp_configure 
    'allow updates'0 reconfigure with override
    Go 

    sp_dboption 
    '置疑的数据库名''single user''false'
    Go 

    感谢以上代码的写作者。
    在执行后,系统显示:未能在数据库中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。
    再想办法仍然不能通过一致性检查,重启系统后,发现库文件已经不是置疑状态,此时数据库可以查询,但不能修改及删除,只能再重建一个后将数据导入,后因磁盘空间问题未能直接导入。在网络上传输时,又因网络中断屡试未果。为了不影响整个系统的运行(系统为近实时运行的系统),最终只能备份了最近一段时间的数据,将原来文件删除,再重建了一个。只是可惜了那300多万的数据。
  • 相关阅读:
    pipelinewise 学习二 创建一个简单的pipeline
    pipelinewise 学习一 docker方式安装
    Supercharging your ETL with Airflow and Singer
    ubuntu中使用 alien安装rpm包
    PipelineWise illustrates the power of Singer
    pipelinewise 基于singer 指南的的数据pipeline 工具
    关于singer elt 的几篇很不错的文章
    npkill 一个方便的npm 包清理工具
    kuma docker-compose 环境试用
    kuma 学习四 策略
  • 原文地址:https://www.cnblogs.com/wjhx/p/949099.html
Copyright © 2011-2022 走看看