一、数据库置疑恢复之经典如果没有出现数据库置疑只是损坏,请直接.doc
文本预览下载声明
一、数据库置疑恢复之经典
如果没有出现数据库置疑只是损坏,请直接参看:二、修复数据库。
步骤1:
创建一个新的数据库,命名为原来数据库的名字。
步骤2:
停止SQL Server
步骤3:
把老数据库的MDF文件替换新数据库的相应的MDF文件,并把LDF文件删除。
步骤4:
重新启动SQL Server服务,然后在sql查询分析器运行如下命令:
Use Master
Go
sp_configure allow updates, 1
reconfigure with override
Go
begin tran
update sysdatabases set status = 32768 where name = hdposv2
--Verify one row is updated before committing
commit tran
步骤5:
停止SQL然后重新启动SQL Server服务,然后运行如下命令:
DBCC TRACEON(3604)
DBCC REBUILD_LOG(hdposv2,d:\syData\hdposv2_log.ldf)
Go
步骤6:
停止SQL然后重新启动SQL Server服务,然后运行:
use master
update sysdatabases set status = 8 where name = hdposv2
Go
sp_configure allow updates, 0
reconfigure with override
Go
步骤7:
运行
dbcc checkdb(hdposv2)
检查数据库的完整性
注:都要替换成真实的数据库名字。
二、修复数据库
一般置疑都会导致数据库损坏。请用以下语法修复数据库。
/*****************************************************************
* 本语句可以多次执行,一直到没有红色文字出现,则修复成功
* 这类故障是一般是由于磁盘读写问题造成的。
* hdposv2代表要修复的数据库,如果是其它版本,请更改数据名称。
******************************************************************/
--请在查询分析器中执行下列语句.执行前断开其它所有数据库连接,最好是断开网线
USE master
Go
--单用户模式
EXEC sp_dboption hdposv2, single user, TRUE
go
--数据库检查
DBCC CHECKDB (hdposv2)
Go
--如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复
--数据库修复
DBCC CHECKDB (hdposv2,repair_rebuild)
Go
--再次数据库检查,如果返回结果中没有了红色的提示文字,说明修复成功;
DBCC CHECKDB (hdposv2)
Go
--否则意味着还需要更高级别的修复;尝试将上面修复语句的repair_rebuild换为repair_allow_data_loss再试,之后再次检查数据库。
--如果还有错误未修复,可以多次进行修复处理。
--退出前请一定要执行以下语句返回到多用户模式
EXEC sp_dboption hdposv2, single user,FALSE
go
三、数据库修复增加篇
数据库损坏是一个很令人头痛的问题。通常情况是用我们以上提供的修复方法是可以修复,但是也有部分数据库采用那种办法是无法修复的。针对上述情况我在这里再介绍两种方法给大家参考:
一、利用sql server本身自带的DTS 导入/导出来处理。
a.把问题的数据库还原或者附加到自己的机器上,并修改数据库名称,如为:hdpos
b.创建一个新的空的相同版本的海德数据库,如hdposv2。
c. 在查询分析器中选择新的数据库,运行下列:
select delete +name FROM SYSOBJECTS WHERE TYPE = U
然后把返回的结果集复制,新建一个查询分析器窗口,把复制的内容粘贴下运行!
d.打开企业管理器,利用企业管理器的DTS 导入/导出向导,把原来的数据库hbpos的数据导到hbposv5中。操作步骤如下(1-11)各图:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
e.连接新的数据库,进入系统检查数据。
f.升级相同版本的最新补丁。
二、利用BCP处理。a、此方法适用于索引坏;b、DBCC不能修复的数据库;c、置疑数据库也可用此方法修复(改成紧急模式下就可以访问置疑数据库)等等,但是条件是能用SELECT在
显示全部