阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 3060|回复: 5

[推荐] 数据库msdb置疑的解决之道

[复制链接]
  • TA的每日心情

    2024-2-21 15:00
  • 签到天数: 354 天

    [LV.8]以坛为家I

    发表于 2009-7-3 08:49:12 | 显示全部楼层 |阅读模式
    今天弄自己的SQL2000,偶尔发现了这样一个问题,msdb居然置疑了,因为机器里面对应的数据库太多,懒得重装,从网上找了点解决办法。

    解决方法一:你可以采用以下的代码进行修复:
      
    USE MASTER
    GO
    SP_CONFIGURE 'ALLOW UPDATES',1
    RECONFIGURE WITH OVERRIDE
    GO
    UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='msdb'
    Go
    sp_dboption 'msdb', 'single user', 'true'
    Go
    DBCC CHECKDB('msdb')
    Go
    update sysdatabases set status =28 where name='msdb'
    Go
    sp_configure 'allow updates', 0
    reconfigure with override
    Go
    sp_dboption 'msdb', 'single user', 'false'
    Go


    解决方法二:

    MSDB数据库解决过程
    难点:由于MSDB数据库不能删除,将其文件拷出来,再次附加数据库,但新的附加数据库不能叫MSDB,也就是不能同名,遇到了困难。
    1:先停止整个数据库,将该数据库的文件msdbdata.mdf和msdblog.ldf拷贝粘贴出来到另一个目录下。
    2:将以上的文件再拷贝到另一个目录下,也就是说复制两次。
    3:选择 数据库右击鼠标 --》所有任务--》附加数据库 将复制出的一个备份文件附加上去,其中,数据库名称叫MSDB1,用户是SA或ADMINISTRATOR。
    4:将MSDB1数据库备份,备份成一个文件,当时我的叫MSDB。BAK。
    5:选择置疑的数据库MSDB,选择恢复数据库,将刚才备份出来的数据库强行恢复到MSDB。
    6:问题解决,MSDB库又能正常使用。

    完成后赶快将数据库再次备份一次。呵呵。

    另附:数据库置疑解决办法

    第一次遇到数据库质疑这样的问题,把我给吓坏了,重要数据啊~~大家知道为什么会发生这种情况么?是不是不正常关机的情况下会发生这种情况?

    还有,现在修复好了,但昨天的数据丢失了,以前的数据倒还在。难道昨天发生了什么异常情况?

    我这里一篇解决数据库质疑的文档,提供给大家,日后备用:

    SQL SERVER数据库置疑后恢复步骤


    1. 恢复步骤:
    a.将smlog_log.ldf文件备份到其它目录下;
    b.将源目录下的smlog_log.ldf文件改名为smlog_log_bak.ldf;
    c.执行以下语句修改数据库的状态:
    use Master
    go
    update sysdatabases set status=32768 where name=’数据库名称’ --修改状态
    go
    shutdown with nowait --停止数据库服务器
    go
    d.退出SQL并在命令行模式中通过下面的代码重新启动SQL:
    sqlservr -c -T3608 -T4022 --安全模式启动SQL SERVER
    e.在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:
    select Name,Status from sysdatabases where Name=’ 数据库名称’
    f.执行以下代码新建日志文件:
    dbcc traceon(3604) --跟踪
    dbcc rebuild_log(‘数据库名称’,’日志文件名称’) --文件名要有全路径和扩展名
    g.将数据库置回正常状态:
    update sysdatabases set status=0 where name=’数据库名称’
    h.重新启动数据库后执行以下语句检查数据库:
    DBCC CHECKDB --如果执行完有错误用以下语句修复
    i.要修复数据库必需将数据库改为单用户模式:
    Exce sp_dboption ‘数据库名称’,’single user’,’true’(‘false’恢复多用户)
    j.执行以下语句修复数据库:
    DBCC CHECKDB(‘数据库名称’,REPAIR_ALLOW_DATA_LOSS)
    REPAIR_ALLOW_DATA_LOSS:是比较高级的修复方式
    REPAIR_FAST:是简单快速的修复方式  


    相似问题:系统重装,忘记了备份SQL,然后又通过数据恢复工具找回了mcdb_data.mdf 和mcdb_Log.LDF,在企业管理器上用附加数据库时提示错误9004,日志错误,在网上找了诸多方法,也试过建个同名空数据库然后停止SQL SERVER然后覆盖掉MDF。但都不行。

    这是详细步骤.

    1.先建一个与你要恢复的数据库名称一样的数据库。
    2.停止sql server,把你的数据库替换这个数据库。
    3.重启sql server,把数据库设置为紧急状态。
    sp_configure 'allow',1
    reconfigure with overirde
    update sysdatabases set status=32768 where name='yourdata'
    4.重建日志文件。
    dbcc rebuild_log('yourdata','your data path\newdata_log.ldf')
    5.取消紧急模式。
    update sysdatabases set status=0 where name='yourdata'
    restore sysdatabases yourdata with recovery
    sp_configure 'allow',0
    reconfigure with override
    6.重起sql server
    7.ok
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    无聊
    2023-11-14 11:00
  • 签到天数: 448 天

    [LV.9]以坛为家II

    发表于 2009-7-3 09:19:13 | 显示全部楼层
    数据库msdb置疑的情况经常遇到,但是为什么会置疑呢?楼主能否说明一下,以避免这种情况的发生。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情

    2024-2-21 15:00
  • 签到天数: 354 天

    [LV.8]以坛为家I

     楼主| 发表于 2009-7-3 11:05:31 | 显示全部楼层
    数据库置疑的原因不外乎这几种:

    1、 因SQL服务意外退出导致数据库置疑,例如突然断电导致数据库日志文件损坏,即ldf文件。下次启动后数据库变为置疑状态。

    2、数据库文件所在的磁盘分区没有可用空间,导致恢复数据库的操作不能完成,数据库变为置疑状态。

    3、数据库文件组已满,这种情况通常发生在MSDE或SQL 2005 Express,因为它们对数据库文件限制了大小,不超过2G或4G;当单个的数据库文件接近2G或4G很容易出现数据库置疑的情况;

    另外,当数据库文件所在磁盘分区格式为FAT32时,也有可能出现这种情况,FAT32格式的磁盘分区单个文件不能超过4G,当单个的数据库文件接近4G很容易出现数据库置疑的情况。

    4、数据库文件设置为不自动增长,或设置为自动。

    5、此外,其它非法的操作也有可能导致数据库置疑。我个人处理过两个msdb置疑,一种情况是误操作,在查询分析器里面执行语句的时候误选择了msdb。另一种是恢复数据的时候误选择了msdb,而第二种情况下,msdb数据库不但会以灰色状态显示,同时后面还会有个括号,显示加载中。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    郁闷
    2013-1-14 11:54
  • 签到天数: 130 天

    [LV.7]常住居民III

    发表于 2009-7-6 14:30:03 | 显示全部楼层
    我还没遇到过,我估计很多时候是断电引起的。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    无聊
    2018-2-18 22:17
  • 签到天数: 306 天

    [LV.8]以坛为家I

    发表于 2010-2-27 22:57:00 | 显示全部楼层
    呵呵 又学习了,多谢老大分享
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情

    2017-1-26 22:21
  • 签到天数: 71 天

    [LV.6]常住居民II

    发表于 2010-2-28 21:27:11 | 显示全部楼层
    我试过一次 用了介绍的所有方法 都没有解决  ....
    后来重新安装sql软件才解决的
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表