S4产品FAQ

首页 » S4产品FAQ » 客户服务 » 常见问题问答 » MS SQL 数据库质疑修复
hurui - 2015/8/11 10:49:54

1.下面以metadb_auto数据库为例:(红色为数据库名)

停止SQL服务管理器,将原数据文件拷贝出来进行备份,然后将原数据库删除。


1674




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


1675




3.停止SQL Server服务,用备份出来的老数据库的

MDF文件替换新数据库相应的MDF文件,并把新数据库相应的LDF文件删除。


1676




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

Use Master

Go

sp_configure 'allow updates', 1

reconfigure with override

Go

begin tran

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

--Verify one row is updated beforecommitting

commit tran


1677




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

DBCC TRACEON(3604)

DBCC REBUILD_LOG('metadb_auto','C:\ProgramFiles\Microsoft SQLServer\MSSQL\Data\metadb_auto_log.ldf')

Go

--注:此处绿色为数据库文件路径


1678




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

use master

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

Go

sp_configure 'allow updates', 0

reconfigure with override

Go


1685




7.运行dbcc checkdb(metadb_auto)检查数据库的完整性,如果没有红色文字,则说明数据库已恢复正常无需往下执行。如果有很多红色文字,说明需要修复,需要继续往下执行。


1680




8.修复数库

*以下语句可以多次执行,一直到没有红色文字出现,则修复成功

*这类故障是一般是由于磁盘读写问题造成的。

* 'metadb_auto'代表要修复的数据库

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

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

USE master

Go

--单用户模式

EXECsp_dboption 'metadb_auto', 'single user', 'TRUE'

go

--数据库检查

DBCCCHECKDB ('metadb_auto')

Go

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

--数据库修复

DBCCCHECKDB ('metadb_auto',repair_rebuild)

Go

--再次数据库检查,如果返回结果中没有了红色的提示文字,说明修复成功;

DBCCCHECKDB ('metadb_auto')

Go

--否则意味着还需要更高级别的修复;尝试将上面修复语句的'repair_rebuild'换为'repair_allow_data_loss'再试,之后再次检查数据库。

--如果还有错误未修复

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

EXECsp_dboption 'metadb_auto', 'single user','FALSE'

go

1681




9.--单用户模式

EXEC sp_dboption 'metadb_auto', 'single user', 'TRUE'

go


1682



10.-数据库检查

DBCC CHECKDB ('metadb_auto')

Go

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


1683




11.--数据库修复

DBCC CHECKDB ('metadb_auto','repair_rebuild')

Go

--多次运行此语句,红色文字不断减少,说明在修复中。


1684




12.--再次数据库检查,如果返回结果中没有了红色的提示文字,说明修复成功;DBCC CHECKDB ('metadb_auto')Go--否则意味着还需要更高级别的修复;尝试将上面修复语句的'repair_rebuild'换为'repair_allow_data_loss'即是(DBCC CHECKDB ('metadb_auto','repair_allow_data_loss')Go)再试,运行后,这样红色文字就没有了,说明修复成功了,之后再次检查数据库。




13..--退出前请一定要执行以下语句返回到多用户模式EXECsp_dboption 'metadb_auto', 'single user','FALSE'go



1
查看完整版本: MS SQL 数据库质疑修复