求助 如何修复数据库

求助 如何修复数据库,第1张

如果没有主数据库,您就无法成功地启动SQL Server。在本文里,我将向您介绍在发生崩溃的情况下如何修复主数据库,并告诉您如何重建主数据库,如果有必要的话。

制定预案

制定一个应对崩溃和/或主数据库故障的预案十分重要。这将有助于您在碰到灾难的情况下按照既定的方法进行处理,而不是迫于压力仓促作出反应。我碰到过很多很容易就陷入惊慌的状况,但是由于保持冷静并按照正确的方法来处理问题,我最后成功地度过了所有的困境。

怎么才能知道您的主数据库已经崩溃?

在正式开始讨论碰到系统故障如何修复和重建的主数据库之前,我们需要先了解如何辨别它已经崩溃了。要说明这一点,我会弄垮一个主数据库,告诉您主数据库崩溃会发生什么样的症状。

现在让我们假设您的公司碰到了电涌,造成SQL Server重启。在重新启动的时候,SQL Server却没有正常启动。如果查看错误日志,您会看到主数据库崩溃或者丢失。既然您知道需要查看什么信息,那就让我们看看如何修复主数据库。

修复您的主数据库

修复主数据库的第一步是使用“重建向导(Rebuild Wizard,Rebuildm.exe),它放在\Program Files\Microsoft SQL Server\80\Tools\BINN目录下。现在就让我们来看看重建向导是如何工作的。

双击Rebuildm.exe启动对话框。

在这个对话框里,您可以指定数据库服务器的修复设置,以及原始安装的数据文件的位置。要让这一过程更容易和更快,就要把x86目录从SQL的光盘上复制到硬盘上,并把指向改到本地的副本。一旦验证完了所有的信息,点击“重建(Rebuild)”。然后系统就会提示您确认 *** 作

点击“确定(Yes)”。一旦重建过程完成,您会看到一条重建成功的消息。您现在就有了一个全新的主数据库,准备好修复主数据库了。

首先,打开命令行提示符,输入\Program Files\Microsoft SQL Server\MSSQL\BINN\目录下的sqlservr.exe –c –m命令,启动单用户模式下的SQL Server。

在单用户模式下启动SQL Server之后,您可以利用备份文件修复主数据库。您可以用“查询分析器(Query Analyzer)”或者“SQL企业管理器(SQL Enterprise Manager)”来修复它。

如果使用企业服务器,就要右击主数据库,选择“所有任务|修复数据库(All Tasks | Restore Database)”,浏览到您设备所在的位置,点击两次“OK”,您就可以成功地修复主数据库了。

如果由于某种原因您的修复 *** 作无法成功完成,那么您可以试试别的方法。只用简单地重建主数据库并添加驻留在数据目录下的所有数据库就可以了。您可以用企业管理器或者查询分析器来添加数据库。在企业管理器里,右击“数据库(Databases)”,选择“添加数据库(Attach Database)”

1.停止SQL Server的服务,备份SQL Server安装目录下的\data子目录

下故障数据库的两个文件,一个数据文件hbposv6_branch_data.mdf,

一个hbposv6_branch_log.ldf(也有可能非此命名),同时查看磁盘

空间是否有足够的空间;

2.启动SQL Server服务(如已停止),创建一个新的数据库,命名为

原来数据库的名字。

3.停止SQL Server

4.把老数据库的MDF文件(hbposv6_branch_data.mdf)替换

新数据库的相应的MDF文件,

并把LDF文件(hbposv6_branch_log.ldg)删除。

5.重新启动SQL Server服务,然后运行如下命令:

Use Master

go

sp_configure 'allow updates', 1

reconfigure with override

go

begin tran

update sysdatabases set status = 32768 where name = 'hbposv6_branch'

--Verify one row is updated before committing

commit tran

go

6.停止SQL然后重新启动SQL Server服务,然后运行如下命令

(更换日志文件路径地址):

use master

go

DBCC TRACEON(3604)

DBCC REBUILD_LOG

('hbposv6_branch',

'c:\Program Files\Microsoft SQL Server\MSSQL\Data\hbposv6_branch_log.ldf')

--在这里,请输入你的数据库的路径

go

7.停止SQL然后重新启动SQL Server服务,然后运行:

use master

go

update sysdatabases set status = 8 where name = 'hbposv6_branch'

go

sp_configure 'allow updates', 0

reconfigure with override

go

8.运行dbcc checkdb(db_name) 检查数据库的完整性

9.修复数库

--请在查询分析器中执行下列语句.执行前断开其它

所有数据库连接,最好是断开网线

--如果不是该数据库名,请将数据库

--hbposv6_branch

--改为要修复的数据库

USE master

Go

--单用户模式

EXEC sp_dboption 'hbposv6_branch', 'single user', 'TRUE'

go

--数据库检查

DBCC CHECKDB ('hbposv6_branch')

Go

--如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复

--数据库修复

DBCC CHECKDB ('hbposv6_branch','repair_rebuild')

Go

--再次数据库检查,如果返回结果中没有了红色的提示文字,

说明修复成功;

DBCC CHECKDB ('hbposv6_branch')

Go

--否则意味着还需要更高级别的修复;尝试将上面修复语句的

'repair_rebuild'换为'repair_allow_data_loss'再试,

之后再次检查数据库。

--如果还有错误未修复,请把这些信息以文字的方式发给我们

--退出前请一定要执行以下语句返回到多用户模式

EXEC sp_dboption 'hbposv6_branch', 'single user','FALSE'

go

注:都要把 dbname 替换成真实的数据库名字。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/6734875.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-27
下一篇2023-03-27

发表评论

登录后才能评论

评论列表(0条)

    保存