SQL 2000数据库置疑及修复方案

数据库置疑及修复

数据库置疑处理

提要:在数据库置疑或者修复的处理过程中,须先将文中的数据库更改为真实的数据库名称.
数据库置疑修复处理完成后,需执行第二步骤,使用DBCC语句对数据库进行检测并修复错误.

对于损坏的数据库,可参照数据库修复处理方法进行处理.
步骤1:
停止SQL服务管理器,将原数据文件(sql根目录下的.mdf .ldf文件)拷贝出来进行备份,然后将原数据库删除,使用思迅数据库安装包程序创建一个新的数据库。
步骤2:
停止SQL Server 服务管理器
步骤3:
用备份出来的老数据库的MDF文件替换新数据库相应的MDF文件,并把(新的)LDF文件删除。
步骤4:
重新启动SQL Server服务,然后运行如下命令:

Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go

begin tran
update sysdatabases set status = 32768 where name = 'hbposv8'
--Verify one row is updated before committing
commit tran

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

DBCC TRACEON(3604)
DBCC REBUILD_LOG('db_name','C:\ProgramFiles\Microsoft SQL Server\MSSQL\Data\hbposv8_log.ldf')
Go

–注:此处的db_name一定要更换为需要修复的数据库名称,比如此实例中的hbposv8
步骤6:
停止SQL然后重新启动SQL Server服务,然后运行:

use master 
update sysdatabases set status = 8 where name = 'hbposv8' 
Go 
sp_configure 'allow updates', 0 reconfigure with override 
Go

步骤7:
运行dbcc checkdb(hbposv8) 检查数据库的完整性
----如数据库修复有报错,请按以下步骤执行处理:

数据库修复

  • 本语句可以多次执行,一直到没有红色文字出现,则修复成功
  • 这类故障是一般是由于磁盘读写问题造成的。
    请在查询分析器中执行下列语句.执行前断开其它所有数据库连接,最好是断开网线
    1.请在查询分析器中执行下列语句.执行前断开其它所有数据库连接,此处以数据库hbposv8为例
USE master  
Go

–2.单用户模式

EXEC sp_dboption 'hbposv8', 'single user', 'TRUE'
go

–3.数据库修复

DBCC CHECKDB ('hbposv8','repair_rebuild')
Go

–再次数据库检查,如果返回结果中没有了红色的提示文字,
说明修复成功;
–否则意味着还需要更高级别的修复;尝试将上面修复语句的
'repair_rebuild’换为’repair_allow_data_loss’再试,
之后再次检查数据库。

DBCC CHECKDB('hbposv8')

–如果还有错误未修复,请把这些信息以文字的方式发给我们
–4、退出前请一定要执行以下语句返回到多用户模式

EXEC sp_dboption ‘hbposv8’, ‘single user’,‘FALSE’ go

数据库自增列 索引修复
----修复自增列

use 'hbposv8'
go
declare @tablename varchar(100)
declare  test_cur cursor for
select object_name(id) from syscolumns 
where status=128
open test_cur
fetch test_cur into @tablename
while @@fetch_status=0
begin   
   DBCC CHECKIDENT (@tablename, RESEED)   
   fetch test_cur into @tablename
end
close test_cur
deallocate test_cur
Go

----修复索引

use hbposv8
go
declare @tablename varchar(100)
declare  test_cur cursor for
select object_name(id) from sysobjects 
where type ='U'
open test_cur
fetch test_cur into @tablename
while @@fetch_status=0
begin   
   DBCC DBREINDEX(@tablename)
   fetch test_cur into @tablename
end
close test_cur
deallocate test_cur
go
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值