您的位置:首页 > 数据库

数据库置疑处理

2013-12-23 15:16 309 查看
现象说明:新备份出的数据库Geb,在还原时报错"Microsoft SQL-DMO (ODBC SQLState: 42000)"

解决方法:

分离出还原失败的数据库Geb

先创建一个同样的数据库Geb

停掉server服务,用旧的数据文件覆盖新创建的文件(只要mdf就可以)。

启动server服务

运行以下命令

sp_configure 'allow' ,1

reconfigure with override

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

dbcc rebuild_log('Geb','d:\database\newlog.ldf')

update sysdatabases set status=0 where name='Geb'

sp_configure 'allow',0

reconfigure with override

dbcc checkdb('Geb')

若发现有错误,还要进一步找出出错的地方,可以先检查

DBCC CHECKTABLE (sysobjects)

DBCC CHECKTABLE (sysindexes)

DBCC CHECKTABLE (syscolumns )

DBCC CHECKTABLE (systypes)

DBCC CHECKTABLE ( '表名 ',REPAIR_ALLOW_DATA_LOSS)

DBCC CHECKDB ( 'database_name ' ,REPAIR_ALLOW_DATA_LOSS )

dbcc dbreindex(’database_name.dbo.Employee’,’’,90)

WITH NO_INFOMSGS

DBCC CHECKTABLE('dbo.xxx')

'dbo.xxx'是表面,查到有50个一致性错误

然后用下面的语句进行修复:

alter database 你要修复的数据库名 set single_user with rollback immediate

go

dbcc checktable('dbo.xxx',repair_allow_data_loss)

go

修复无错后注意要恢复数据库的多用户使用状态,否则整个数据库处于锁定状态,一次只能有一个人访问。

alter database 你要修复的数据库名 set multi_user

go

exec sp_dboption '你的数据库名 ', 'single user ', 'true '

Go

DBCC CHECKTABLE( '库存管理_库存明细帐1 ',repair_allow_data_loss)

go

sp_dboption '你的数据库名 ', 'single user ', 'false '

Go
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: