数据库损坏和置疑修复指引.docx
《数据库损坏和置疑修复指引.docx》由会员分享,可在线阅读,更多相关《数据库损坏和置疑修复指引.docx(8页珍藏版)》请在冰点文库上搜索。
数据库损坏和置疑修复指引
数据库损坏和置疑修复方法
目录
前言1
数据库损坏的常规修复处理方法1
数据库置疑的修复处理方法1
数据库置疑修复培训教程1
前言
SqlServer数据库本身依赖于操作系统、文件读写存储等环境,数据库经常因为操作系统、异常关机、异常终止退出或者SQLServer数据库本身的机制问题均会导致数据库无故损坏,其中数据库损坏的主要原因如下:
1.事务日志问题。
比如事务日志文件丢失;事务日志文件在操作过程中被误删;事务日志文件被损坏以及事务日志文件过大,导致硬盘的空间不足等。
2.意外掉电或异常强制关机,造成数据文件损坏,主要数据库正在被读写过程中异常关机。
3.数据库的表被破坏或索引等被破坏,或者数据库的其他对象被破坏或丢失等。
4.删除了数据文件,或者更改了它的名字。
5.硬盘损坏,造成数据和日志文件读写错误。
6.感染病毒或者其他人为因素破坏。
7.其他文件读写、存储等原因。
数据库损坏的常规修复处理方法
--1、第一步,请在查询分析器中执行下列语句.执行前断开其它所有数据库连接,此处以专卖店V7为例
USEmaster--2、第二步
Go
--单用户模式
EXECsp_dboption'isszmv7','singleuser','TRUE'
go
--3、数据库修复
DBCCCHECKDB('isszmv7','repair_rebuild')
Go
--再次数据库检查,如果返回结果中没有了红色的提示文字,
说明修复成功;
--否则意味着还需要更高级别的修复;尝试将上面修复语句的
'repair_rebuild'换为'repair_allow_data_loss'再试,
之后再次检查数据库。
DBCCCHECKDB('isszmv7')
--如果还有错误未修复,请把这些信息以文字的方式发给我们
--4、退出前请一定要执行以下语句返回到多用户模式
EXECsp_dboption'isszmv7','singleuser','FALSE'
go
--5、数据库修复好后,最后执行一下自增列的修复
useisszmv7--可改成相应的数据库名
go
declare@tablenamevarchar(100)
declaretest_curcursorfor
selectobject_name(id)fromsyscolumns
wherestatus=128
opentest_cur
fetchtest_curinto@tablename
while@@fetch_status=0
begin
DBCCCHECKIDENT(@tablename,RESEED)
fetchtest_curinto@tablename
end
closetest_cur
deallocatetest_cur
go数据库置疑的修复处理方法
1.停止SQLServer的服务,备份SQLServer安装目录下的\data子目录一个hbposv7_log.ldf(也有可能非此命名),
同时查看磁盘
2.启动SQLServer服务(如已停止),创建一个新的数据库,命名为空间是否有足够的空间;原来数据库的名字。
3.停止SQLServer
4.把老数据库的MDF文件(hbposv7_data.mdf)替换
新数据库的相应的MDF文件,
并把LDF文件(hbposv7_log.ldg)删除。
5.重新启动SQLServer服务,然后运行如下命令:
UseMaster
go
sp_configure'allowupdates',1
reconfigurewithoverride
go
begintran
updatesysdatabasessetstatus=32768wherename='hbposv7'
--Verifyonerowisupdatedbeforecommitting
committran
go
6.停止SQL然后重新启动SQLServer服务,然后运行如下命令
(更换日志文件路径地址):
usemaster
go
DBCCTRACEON(3604)
DBCCREBUILD_LOG
('hbposv7',
'c:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\hbposv7_log.ldf')
--在这里,请输入你的数据库的路径
Go
7.停止SQL然后重新启动SQLServer服务,然后运行:
usemaster
go
updatesysdatabasessetstatus=8wherename='hbposv7'
go
sp_configure'allowupdates',0
reconfigurewithoverride
go
8.运行dbcccheckdb(db_name)检查数据库的完整性
9.修复数库
--请在查询分析器中执行下列语句.执行前断开其它
所有数据库连接,最好是断开网线
--如果不是该数据库名,请将数据库
--hbposv7
--改为要修复的数据库
USEmaster
Go
--单用户模式
EXECsp_dboption'hbposv7','singleuser','TRUE'
go
--数据库检查
DBCCCHECKDB('hbposv7')
Go
--如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复
--数据库修复
DBCCCHECKDB('hbposv7','repair_rebuild')
Go
--再次数据库检查,如果返回结果中没有了红色的提示文字,
说明修复成功;
DBCCCHECKDB('hbposv7')
Go
--否则意味着还需要更高级别的修复;尝试将上面修复语句的
'repair_rebuild'换为'repair_allow_data_loss'再试,
之后再次检查数据库。
--如果还有错误未修复,请把这些信息以文字的方式发给我们
--退出前请一定要执行以下语句返回到多用户模式
EXECsp_dboption'hbposv7','singleuser','FALSE'
go