SQL SERVER 2000数据库置疑 紧急模式

SQL SERVER 2000数据库置疑 紧急模式SQLSERVER2000数据库,服务重启之后系统库以外的其它库都会出现置疑(置疑之前没有备份的库。除非是置疑前一秒刚备份完,或者是备份完没有再使用,可以直接恢复):1、停掉SQLSERVER服务(开始–控制面板–管理工具–服务–MSSQLSERVER–右键停止)2、找到置疑库的数据文件mdf和ldf存放位置,备份此文件到其它文件夹3、重启SQLSERVER服务

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

SQL SERVER 2000数据库,服务重启之后系统库以外的其它库都会出现置疑(置疑之前没有备份的库。除非是置疑前一秒刚备份完,或者是备份完没有再使用,可以直接恢复):

1、停掉SQL SERVER 服务(开始–控制面板–管理工具–服务–MSSQLSERVER–右键停止)

2、找到置疑库的数据文件mdf和ldf存放位置,备份此文件到其它文件夹

3、重启SQL SERVER服务

4、新建与置疑库同名的新库

5、停掉SQ L SERVER服务

6、用置疑库的mdf文件覆盖新同名库的mdf文件(ldf文件不用覆盖)

7、重启SQL SERVER服务

8、此时可以看出新建的库也是置疑状态

9、运行命令:

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 

10、此时一般库就算是恢复正常,可以用了。

但是也有情况,备份此库的时候提示为紧急状态下打开的数据库不可以备份操作,那么应该怎么解决这个问题呢:

11、停掉SQL SERVER服务,找到置疑库的ldf文件,并且删除

12、设置数据库允许直接操作系统表(此操作可以在SQL Server EnterpriseManager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。)

13、设置置疑的库为紧急修复模式

update sysdatabases set status=-32768 where dbid=DB_ID('置疑的数据库名称')

关闭打开企业管理器,此时可以在SQL Server EnterpriseManager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表

14、重建数据库日志文件

dbcc rebuild_log('置疑的数据库名称','(置疑的数据库路径)E:\Microsoft SQL Server\Data\置疑的数据库名称_log.ldf')

执行过程中,如果遇到下列提示信息:

服务器: 消息 5030,级别 16,状态 1,行 1

未能排它地锁定数据库以执行该操作。

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server EnterpriseManager打开了eisdoc库的系统表,那么退出SQL Server EnterpriseManager就可以了。(关闭企业管理器,如果别的机器从网络访问数据库,也把网络关闭)

正确执行完成的提示应该类似于:

警告: 数据库 ‘eisdoc’ 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

此时打开在SQL Server EnterpriseManager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。

15、验证数据库一致性(可省略)

dbcc checkdb('置疑的数据库名称')

一般执行结果如下:

CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 ‘置疑的数据库名称’ 中)。

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

16、设置数据库为正常状态(如果没有出错,那么现在就可以正常的使用恢复后的数据库啦。)

sp_dboption ‘置疑的数据库名称’,’dbo use only’,’false’

17、关闭“允许对系统目录直接修改”一项(参考第12项操作)

因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server EnterpriseManager里面恢复。

注:

sqlserver2008数据库可疑文件的修复方式:

1.设置数据库状态,脚本:EXEC sp_resetstatus’eisdoc’

2.设置数据库为紧急模式,脚本:ALTER DATABASEeisdoc SET EMERGENCY

3.设置数据库为单用户模式(对数据库检查修复只能在单用户模式下),脚本:ALTER DATABASEeisdoc SET SINGLE_USER

4.检查并修复数据库,会提示你修复数据库可能丢失数据,正常应该不会丢失数据库数据,但是数据库日志的完整性将受到破坏,脚本:DBCCCheckDB (eisdoc, REPAIR_ALLOW_DATA_LOSS)

5.恢复数据库为多用户模式,脚本:ALTER DATABASEeisdoc SET MULTI_USER

以上五步即可修复sqlserver2008中的可疑文件

以上文件,自第11步开始转自:http://blog.sina.com.cn/s/blog_61feb2110101e2ez.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171402.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为什么Redis选择6379作为默认端口号?[通俗易懂]

    为什么Redis选择6379作为默认端口号?[通俗易懂]6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女AlessiaMerz的名字。MERZ长期以来被antirez及其朋友当作愚蠢的代名词。Redis作者antirez同学在twitter上说将在下一篇博文中向大家解释为什么他选择6379作为默认端口号。而现在这篇博文出炉,在解释了Redis的LRU机制之后,向大家解释了采用6379作为默认端口的原因。原博文:http://anti…

    2022年5月27日
    95
  • 人工智能:智能优化算法

    人工智能:智能优化算法**人工智能:智能优化算法优化问题是指在满足一定条件下,在众多方案或参数值中寻找最优方案或参数值,以使得某个或多个功能指标达到最优,或使系统的某些性能指标达到最大值或最小值。优化问题广泛地存在于信号处理、图像处理、生产调度、任务分配、模式识别、自动控制和机械设计等众多领域。优化方法是一种以数学为基础,用于求解各种优化问题的应用技术。各种优化方法在上述领域得到了广泛应用,并且已经产生了巨大的经济效益和社会效益。实践证明,通过优化方法,能够提高系统效率,降低能耗,合理地利用资源,并且随着处理对象规模的增加

    2022年5月22日
    60
  • java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决

    java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决

    2020年11月12日
    192
  • Nginx 报错 504 Gateway Time-out 的解决方法

    Nginx 报错 504 Gateway Time-out 的解决方法

    2022年2月15日
    68
  • 基于大数据的舆情分析_舆情与大数据

    基于大数据的舆情分析_舆情与大数据数据工厂,是一套多组件化数据清洗加工及数据存储管理平台,同时能够管理所有的数据库的备份方案。支持多数据源类型的数据同步实现和数据仓库其他的数据源互通。对接收数据进行解压,对外提供压缩后的数据。

    2022年9月20日
    0
  • c++ 中map 的find 用法[通俗易懂]

    c++ 中map 的find 用法[通俗易懂]用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器,程序说明#include<map>#include<string>#include<iostream>Usingnamespacestd;Intmain(){      Map&lt…

    2022年10月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号