首页 > 开发 > 综合 > 正文

数据库被置疑的解决办法

2024-07-21 02:11:54
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • 在ms sqlserver中一直有这样的问题,sqlserver的状态"置疑",我们先来分析一下sqlserver数据库"置疑"的原因:
    1.错误的删除日志;
    2.硬件(hd)损坏,造成日志和数据文件写错误;
    3.硬盘的空间不够,比如日志文件过大;


    解决办法:

    这是最简单的办法是有数据库的全备份,然后恢复即可.
    步骤:

    1. 删除原始的数据库:
    use master
    go
    drop database db_suepect


    2.建立同名的数据库:
    use master
    go
    create database db_suspect
    on
    ( name = dbname_dat,
    filename = 'c:',
    size = 10,
    filegrowth = 5 )
    log on
    ( name = 'dbname_log',
    filename = 'g:',
    size = 5mb,
    filegrowth = 5mb )
    go


    3.恢复数据库:
    restore database db_suspect
    from dbname_backup.dat


    4.数据库完整性检测:
    dbcc checkdb('db_suspect')

    5.重新启动mssqlserver服务.

    如果没有全备份,那就要用一些特殊的方法:

    1.设置数据库为紧急模式
    use master
    go
    sp_configure 'allow updates', 1
    reconfigure with override
    go
    update sysdatabases set status = 32768 where name = 'db_suspect'
    go

    2.停掉sql server服务:
    net stop mssqlserver

    3.把原始数据库的数据文件dbname_dat.mdf,dbname_log.ldf移走:

    4.启动sql server服务:
    net start mssqlserver

    5.重新建立一个同名的数据库db_suspect;

    use master
    go
    create database db_suspect
    on
    ( name = dbname_dat,
    filename = 'c:',
    size = 10,
    filegrowth = 5 )
    log on
    ( name = 'dbname_log',
    filename = 'g:',
    size = 5mb,
    filegrowth = 5mb )
    go


    6.设置数据库运行在单用户的模式:
    use master
    go
    alter database db_suspect set single_user
    go

    7.停掉sql服务:
    net stop mssqlserver

    8.把原来的数据文件再覆盖回来:


    9.启动sql server服务:
    net start mssqlserver

    10.重新设置sqlserver的状态:
    use master
    go
    exec sp_resetstatus "db_suspect"

    11.数据库完整性检测:
    dbcc checkdb('db_suspect')

    12.恢复数据库为多用户模式:
    use master
    go
    alter database db_suspect set multi_user
    go

    13.恢复sqlserver原始的配置:
    use mater

    go

    update sysdatabases set status = 4194320 where name = 'db_suspect'
    go

    14.配置sqlserver不允许更新系统表:
    use master
    go
    sp_configure 'allow updates', 0
    reconfigure with override
    go

    15.重新启动mssqlserver服务:

    最好重新启动操作系统

    16.备份数据库:

    可以通过sqlserver企业管理器或t-sql.需要备份master和db_suspect
    补充一点,如果用domain/user时,要注意对.mdf.ldf的所在目录的权限.

    zach的灵验脚本
    zach说他每次遇到这种数据库置疑情况,就运行下面这个脚本,屡试不爽:
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表