SQL 2005/2008质疑修复

SQL 2005/2008置疑修复
SQL 2005 置疑修复

1.停止SQL服务管理器,将原数据文件(sql根目录下的.mdf .ldf文件)拷贝出来进行备份,然后将原数据库删除,使用思迅数据库安装包程序创建一个新的数据库。

use master
go
alter database 置疑数据库 set emergency
go
alter database 置疑数据库 set single_user with rollback immediate
go

2.停止sql server服务,用备份出来的老数据库的MDF文件替换新数据库相应的MDF文件,并把(新的)LDF文件删除。

3.开启sql server服务,依次实现如下语句:

alter database 置疑数据库 Rebuild Log on
(name=SuspectDB_log,filename='D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\置疑数据库_log.LDF')
go
alter database hbposv10 set multi_user
go

4.检查是否仍有损坏

DBCC CHECKDB('置疑数据库')
go
----简略版
alter database 置疑数据库 set emergency 
go 
alter database 置疑数据库 set single_user with rollback immediate 
go 
use master 
go 
alter database 置疑数据库 Rebuild Log on (name=SuspectDB_log,filename=’D:/Log/置疑数据库_log.LDF’) 
go 
alter database 置疑数据库 set multi_user 
go

DBCC CHECKDB('置疑数据库') 
go
SQL 2008 置疑疑修复

一、备份“置疑”数据库的数据文件,因为日志文件.ldf出错,可以只备份.mdf文件。

二、打开SQL Server Management Studio,删除“置疑”数据库,如果提示删除错误,可以重启数据库服务器,然后再试。

三、重新使用server包创建hbposv10空库

四、停止数据库服务器

五、将刚才新建数据库生成的数据库的日志文件hbposv10_log.ldf删除,用要恢复的数据库.mdf文件覆盖刚才生成的数据库数据文件hbposv10_data.mdf。

六、启动数据库服务器。此时会看到数据库hbposv10的状态为“置疑”。这时候不能对此数据库进行任何操作。

七、更改库状态

use master
alter database hbposv10 set emergency

alter database hbposv10 set single_user with rollback immediate
go
use master
go
--重建log日志
alter database hbposv10 Rebuild Log on
(name=SuspectDB_log,filename='C:\Program Files\Microsoft SQL Server\MSSQL10_50.MYSQLSERVER\MSSQL\DATA\hbposv10_log.ldf')
go

alter database hbposv10 set multi_user
go

八、检查并修复数据库

--检查数据库,如没有错误就不用执行下面语句
DBCC CHECKDB('hbposv10') 
go 
--切换单用户模式
EXEC sp_dboption 'hbposv10', 'single user', 'TRUE'
go
--修复数据库,修复完后再检查数据库
DBCC CHECKDB ('hbposv10','repair_rebuild')
Go
--上面修复不行,再执行下面修复
DBCC CHECKDB ('hbposv10','repair_allow_data_loss')
Go
--修复完成切换多用户模式
EXEC sp_dboption 'hbposv10', 'single user','FALSE'
go

--修复索引自增列
use hbposv10----门店用 use hbposv10_branch
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 testdb_cur

use hbposv10----门店用 use hbposv10_branch
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
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值