iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么恢复SQL Server 2000损坏的数据库文件
  • 134
分享到

怎么恢复SQL Server 2000损坏的数据库文件

2024-04-02 19:04:59 134人浏览 八月长安
摘要

这篇文章主要讲解了“怎么恢复SQL Server 2000损坏的数据库文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么恢复sql Server 200

这篇文章主要讲解了“怎么恢复SQL Server 2000损坏的数据库文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么恢复sql Server 2000损坏的数据库文件”吧!

SQL Server2000中,如果数据库文件(非系统数据库文件)遇到错误的时候,我们该怎么办。以下是笔者以前的笔记。仅适用于非master,msdb的数据库。

说明如下:

1 建一个测试数据库test(数据库类型为完全)2 建一个表,插入点记录

create table a(c1 varchar(2))Goinsert into a values('aa')goinsert into a values('bb')go

3 作完全备份,到文件test_1.bak4 在作一点修改

insert into a values('cc')gocreate table b(c1 int)goinsert into b values(1)goinsert into b values(2)go

5 shutdown 数据库服务器6 用ultraedit编辑数据库文件test_data.mdf,随便修改点字节内容,相当于数据库遭到致命的损坏。7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,而且显示置疑。8 运行isql -SLocalhost -Usa -P1> backup log test TO DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP est_2.bak' WITH NO_TRUNCATE2>go

已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。BACKUP LOG 操作成功地处理了 2 页,花费了 0.111 秒(0.087 MB/秒)。

9 进行恢复最老的完全备份

1> RESTORE DATABASE test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP est_1.bak' WITH NORECOVERY2> go

已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上)。已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。RESTORE DATABASE 操作成功地处理了 97 页,花费了 0.107 秒(7.368 MB/秒)。

10 恢复最近的日志

1> RESTORE LOG test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP est_2.bak' WITH RECOVERY2> go

已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。RESTORE LOG 操作成功地处理了 2 页,花费了 0.056 秒(0.173 MB/秒)。

数据已经完全恢复了,可以使用了。

select * from ago

总结,DBA应该有一个完善的数据库备份计划。本例中,如果没有一个完全备份的话,数据库的恢复就不可能

当sql server数据库崩溃时如何恢复?

  任何数据库系统都无法避免崩溃的状况,即使你使用了clustered,双机热备……仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,无法承受这样昂贵的硬件投资。所以,在系统崩溃的时候,如何恢复原有的宝贵数据就成为一个极其重要的问题了。

  在恢复的时候,最理想的情况就是你的数据文件和日志文件都完好无损了,这样只需要sp_attach_db,把数据文件附加到新的数据库上即可,或者在停机的时候把所有数据文件(一定要有master等)都copy到原有路径下也行,不过一般不推荐这样的做法,sp_attach_db比较好,虽然麻烦许多。

  但是呢,一般数据库崩溃的时候系统是未必能有时间把未完成的事务和脏页等写入磁盘的,这样的情况sp_attach_db就会失败。那么,寄期望于dba制定了一个良好的灾难恢复计划吧。按照你的恢复计划,还原最新的完全备份,增量备份或者事务日志备份,然后如果你的活动事务日志还能读得出来的话,恭喜你!你可以还原到崩溃前的状态。

  一般的单位都是没有专职的dba的,如果没有可用的备份,更可能是最近一次备份的时间过于久远而导致不可接受的数据损失,而且你的活动事务日志也处于不可用的状态,那就是最麻烦的情况了。

  不幸的很的是,一般数据库崩溃都是由于存储子系统引起的,而这样的情况是几乎不可能有可用的日志用于恢复的。那么就只好试一下这些方案了。当然,是要求至少你的数据文件是存在的,要是数据文件、日志文件和备份都没有了的话,别找我,你可以到楼顶上去唱“神啊,救救我吧”。

  首先,你可以试一下sp_attach_single_file_db,试着恢复一下你的数据文件,虽然能恢复的可能性不大,不过假如这个数据库刚好执行了一个checkpoint的话,还是有可能成功的。

  如果你没有好到有摸彩票的手气,最重要的数据库没有像你期盼的那样attach上去,不要气馁,还是有别的方案的。

  我们可以试着重新建立一个log,先把数据库设置为emergency mode,sysdatabases的status为32768 就表示数据库处于此状态。

  不过系统表是不能随便改的,设置一下先

  use master  go  sp_configure 'allow updates', 1  reconfigure with override  go

  然后  update sysdatabases set status = 32768 where name = ''  现在,祈求满天神佛的保佑吧,重新建立一个log文件。成功的机会还是相当大的,系统一般都会认可你新建立的日志。如果没有报告什么错误,现在就可以松一口气了。

  虽然数据是恢复了,可是别以为事情就算完成了,正在进行的事务肯定是丢失了,原来的数据也可能受到一些损坏。

  先把sql server 重新启动一下,然后检查你的数据库吧。  先设置成单用户模式,然后做dbcc

  sp_dboption '', 'single user', 'true'  dbcc checkdb('')

  如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉。

  update sysdatabases set status = 28 where name = '' --当然你的数据库状态可能不是这个,自己改为合适的值吧。也可以用sp_resetstatus  go  sp_configure 'allow updates', 0  reconfigure with override  go

  checkdb的时候可能报告有一些错误,这些错误的数据你可能就只好丢弃了。  checkdb有几种修复选项,自己看着用吧,不过最后你可能还是得用repair_allow_data_loss,完成所有修复。  chekcdb并不能完成所有的修复,我们需要更进一步的修复,用dbcc checktable对每一个表做检查吧。

  表的列表可以用sysobjects里面得到,把objectproperty是istable的全部找出来检查一下吧,这样能够基本上解决问题了,如果还报告错误,试着把数据select into到另一张表检查一下。  这些都做完了之后,把所有索引、视图、存储过程、触发器等重新建立一下。dbcc dbreindex也许可以帮你一些忙。

数据库日志文件丢失时的恢复步骤,描述我误删除了数据库的事务日志文件(.ldf)之后,如何经过各种尝试恢复数据库的。

但是不少网友在处理“数据库置疑”的实践过程中,又产生了许多新的疑问。我还是总结一下出现的几种情况,以供参考。

2.Zach的灵验脚本

Zach说他每次遇到这种数据库置疑情况,就运行下面这个脚本,屡试不爽:======================================================--before running any script, run the following to set the master database to allow updatesUSE masterGOsp_configure 'allow updates', 1GORECONFIGURE WITH OVERRIDEGO

--Run the following scriptUPDATE master..sysdatabases SET status = status ^ 256 WHERE name = 'Database_Name'

--Run the following scriptexec SP_resetstatus Database_Name

--stop and start the MSDTC at this stage

--After the procedure is created, immediately disable updates to the system tables:exec sp_configure 'allow updates', 0GORECONFIGURE WITH OVERRIDEGO=====================================

从上面可以看出,处理置疑的基本步骤还是我那篇文章中说的(注意我使用的字体颜色):执行 sp_configure 以允许对系统表进行更新,然后用 RECONFIGURE WITH OVERRIDE 语句强制实施该配置;数据库重置紧急模式;执行sp_resetstatus关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项(只有系统管理员才能执行)。执行该过程后,立即重启 SQL Server服务;执行 sp_configure 以禁止对系统表进行更新,然后用 RECONFIGURE WITH OVERRIDE 语句强制实施该配置。

status ^ 256的意思就是:Constant Value DescriptionSQLDMODBStat_Suspect 256 Database integrity is suspect for the referenced database.

不同的是,有时候丢失了数据库日志文件,额外需要以下步骤: 把应用数据库设置为Single User模式; 做DBCC CHECKDB;才可以。

但是几位网友的实践结果就是这个DBCC CHECKDB执行失败。一位网友yang说:“但是 DBCC CHECKDB就是执行不了,总是说“该数据库处于回避恢复模式”。我已经试了很多次了,就是改变不了这个状态。”还有一位Rui执行DBCC CHECKDB时报错:“Server: Msg 943, Level 14, State 1, Line 1 Database 'his_yb' cannot be opened because its version (539) is later than the current server version (515).”

对于Yang,可能他没有一步一步做,。我的切身体会是,把应用数据库设置为Single User模式后就可以做DBCC CHECKDB。之后呢,也许SQL Server重启后自动检查数据库是否正常。但是数据应该是可以读出来的,至少可以被DTS Wizard读出来的。这时候的数据库还存在问题,比如我的组件使用数据库时,报告说:“发生错误:-2147467259,未能在数据库 'XXX' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。”

对于Rui,他碰到的那个错误Server: Msg 943, Level 14, State 1, Line 2Database 'XXXX' cannot be opened because its version (536) is later thanthe current server version (515).这表明Rui正试图:从一个SQL Server 2000(version 539,536之类的)的数据库备份恢复到一个SQL Server 7.0中或者把一个SQL Server 2000(version 539,536之类的)的数据库attach到一个SQL Server 7.0中,这是不允许的。如果你必须使用这个SQL Server 2000的数据备份,那么请您首先把这个备份倒入SQL Server 2000,最后用DTS把数据库从SQL Server 2000上transfer到SQL Server 7.0上。

感谢各位的阅读,以上就是“怎么恢复SQL Server 2000损坏的数据库文件”的内容了,经过本文的学习后,相信大家对怎么恢复SQL Server 2000损坏的数据库文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么恢复SQL Server 2000损坏的数据库文件

本文链接: https://www.lsjlt.com/news/60375.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么恢复SQL Server 2000损坏的数据库文件
    这篇文章主要讲解了“怎么恢复SQL Server 2000损坏的数据库文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么恢复SQL Server 200...
    99+
    2024-04-02
  • 怎么恢复PostgreSQL数据文件损坏
    本篇内容介绍了“怎么恢复PostgreSQL数据文件损坏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在数...
    99+
    2024-04-02
  • sql数据库损坏怎么修复
    如果SQL数据库损坏,您可以尝试以下步骤来修复它:1、检查日志文件查看SQL数据库的日志文件,以查找任何错误或警告信息。这些信息可以...
    99+
    2023-03-21
    sql数据库损坏 sql数据库 数据库
  • Oracle redo文件损坏怎么恢复
    这篇“Oracle redo文件损坏怎么恢复”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • Sql Server数据库文件丢失要怎么恢复
    这篇文章主要讲解了“Sql Server数据库文件丢失要怎么恢复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Sql Server数据库文件丢失要怎么恢复”...
    99+
    2024-04-02
  • 怎么恢复xp系统损坏的文件
    这篇文章主要讲解了“怎么恢复xp系统损坏的文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么恢复xp系统损坏的文件”吧!具体方法: 在Windows XP的安装盘中搜索被破坏的文件,需要...
    99+
    2023-06-14
  • sql数据库损坏如何修复
    修复 SQL 数据库的损坏通常可以通过以下步骤来完成: 使用数据库管理工具检查错误日志:首先,使用数据库管理工具连接到受损坏的 ...
    99+
    2024-04-09
    sql
  • oracle数据库损坏的恢复过程是什么
    这篇文章主要介绍“oracle数据库损坏的恢复过程是什么”,在日常操作中,相信很多人在oracle数据库损坏的恢复过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”or...
    99+
    2024-04-02
  • Oracle数据库UNDO损坏后的恢复是怎样的
    这期内容当中小编将会给大家带来有关Oracle数据库UNDO损坏后的恢复是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。    UND...
    99+
    2024-04-02
  • 【mysql数据损坏,通过ibd和frm文件批量恢复数据库数据】
    问题描述 客户那边的测试服务器下午3:00左右因不明原因,所有服务访问不了,ssh也无法连接,客户手动进行强制重启服务器,重启后将所有应用、中间件重启,重启nacos时发现无法连接数据库,通过账号密码...
    99+
    2023-09-02
    数据库 mysql
  • mysql数据库的数据损坏要怎么修复
    这篇文章主要介绍“mysql数据库的数据损坏要怎么修复”,在日常操作中,相信很多人在mysql数据库的数据损坏要怎么修复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysq...
    99+
    2024-04-02
  • SQL Server数据库崩溃后怎么恢复
    这篇文章主要讲解了“SQL Server数据库崩溃后怎么恢复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server数据库崩溃后怎么恢复”吧!任何...
    99+
    2024-04-02
  • Oracle数据库不同损坏级别的恢复是怎样的
    这期内容当中小编将会给大家带来有关Oracle数据库不同损坏级别的恢复是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  在 DBA 的日常工作中不可避免存在着数据...
    99+
    2024-04-02
  • Oracle数据库不同损坏级别的恢复教程
    前言 在 DBA 的日常工作中不可避免存在着数据库的损坏,本文将主要介绍 Oracle 数据库遇到不同损坏级别下的应该采用的恢复方法,供读者在遇到此类情景时,能的找到适合自己的恢复方法,提高工作效率。 数据...
    99+
    2024-04-02
  • win7文件损坏怎么修复
    这篇文章主要介绍“win7文件损坏怎么修复”,在日常操作中,相信很多人在win7文件损坏怎么修复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7文件损坏怎么修复”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-28
  • SQL Server 中如何恢复数据库
    本篇文章给大家分享的是有关SQL Server 中如何恢复数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、在SQL Server Ma...
    99+
    2024-04-02
  • Navicat怎样恢复SQL server的数据库备份
    这篇文章主要介绍Navicat怎样恢复SQL server的数据库备份,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!打开Navicat for MySQL,在左侧激活数据连接,激活数...
    99+
    2024-04-02
  • SQL Server数据库之备份和恢复数据库
    目录1. 概述2. 备份类型3. 恢复模式3.1 简单恢复模式3.2 完全恢复模式和大容量日志恢复模式4. 备份数据库5. 恢复数据库1. 概述 在一些对数据可靠性要求很高的行业,若发生意外停机或数据丢失,其损失是十分惨...
    99+
    2023-03-23
    数据库的备份方法 数据库的恢复方式
  • 数据库文件坏块损坏导致打开时报错怎么办
    小编给大家分享一下数据库文件坏块损坏导致打开时报错怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 故障描述故障主要表现为打开数据库时报错,内容为:“sys...
    99+
    2024-04-02
  • SQL Server中怎么实现数据库恢复备份
    今天就跟大家聊聊有关SQL Server中怎么实现数据库恢复备份,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一种方法:通常我们采用恢复备份的方式...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作