作者:于 2017年05月10日 发布在分类 / 综合 下,并于 2017年05月10日 编辑
    2017-05-10 18:15:43版本: 数据库修复简要办法
     历史版本

    修改日期 修改人 备注
    2019-04-01 14:17:41[当前版本] 补充
    2019-03-14 11:01:35 1
    2018-12-29 16:34:34 补充
    2018-12-29 15:56:56 补充

    数据库坏了怎么办?数据库置疑了怎么办?数据库修复简要办法

    ------------下文的语句中的MenuItem是举例的,具体表名,需要大家根据情况,自行替换------------

    ------------如果数据库是置疑的,从第一步开始------------

    ------------如果数据库不是置疑的,从11开始------------

    ------------开始修复数据库之前,一定要先备份一下数据库,以防万一------------

    1、分离数据库
    2、将坏的数据库文件备份到单独文件夹
    3、解压一个空白数据库出来(注意SQL版本)
    4、附加空白数据库
    5、停止SQL服务
    6、删除之前解压出来的空白数据库文件
    7、拷贝备份的mdf文件,到data目录
    8、启动SQL服务
    9、打开查询分析器,依次执行下列语句,记得修改第三步Log文件的路径。
            --第一、
            exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE /* 打开修改系统表的开关 */
            --第二、
            update sysdatabases set status=32768 where name='yumstone' /* 设置数据库状态 */
            --第三、
            DBCC REBUILD_LOG ('yumstone','c:\Program Files\Yumstone\4.0\Server\Data\yumstone_Log.LDF') /* 重建LDF文件 */
            --第四、
            update sysdatabases set status=0 where name='yumstone' /* 重置数据库状态 */
            --第五、
            restore database yumstone WITH RECOVERY /* 恢复数据库 */
            --第六、
            exec sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE /* 关闭打开修改系统表的开关 */
    10、上述语句执行完以后,几乎就可以解除置疑
    11、SQL企业管理器,找到有问题的数据库,设置为单用户
    12、关闭企业管理器,选择master数据库,执行DBCC检查
            dbcc checkdb('yumstone')
    13、找出全部有问题的表,比如下述描述中的MemberItem表就是有问题的。
            CHECKDB 发现了 0 个分配错误和 4 个一致性错误(在表 'MemberItem' 中,该表的对象 ID 为 155147598)。
    14、对上一步找出来的有问题的表,执行语句dbcc dbReindex('MenuItem'),尝试进行索引修复。
    15、对于重建索引修复不了的表,执行语句dbcc checktable('MenuItem'),尝试进行表修复。

            checkTable语句可能需要执行多次,直到不再出现报错为止

    16、对于checktable修复不了的表,需要用bcp指令导出数据;bcp导出的时候,会自动过滤掉坏的数据,然后清除完表内容以后,再导入即可。(-U后面跟的是SQL的管理员账号sa,-P后面跟的是SQL管理员的密码)
            操作方式如下:
            A、关闭查询分析器
            B、开始=》运行=》CMD
            C、执行bcp指令,例如:bcp yumstone.dbo.MenuItem out c:\MenuItem.txt -c -Usa -P此处填写SQL的sa账号的密码
            D、打开查询分析器,执行语句:Truncate table  MenuItem
            E、关闭查询分析器,并打开CMD程序
            F、执行bcp指令,例如:bcp yumstone.dbo.MenuItem in c:\MenuItem.txt -c -Usa -P此处填写SQL的sa账号的密码
    17、在对Yumstone数据库,做dbcc检查,确保没问题,如果有问题,重复上述步骤。
    18、最后执行语句 exec yum_reindex对Yumstone数据库的所有表重建索引。
    19、关闭查询分析器,打开企业管理器,去除单用户设置。
    20、启动软件服务。

    wcp知识库系统-V3.2.5.free