数据库置疑处理
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
解决方法:
分离出还原失败的数据库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
相关文章推荐
- 64位Ubuntu 12.04 安装mysql-workbench 分类: ubuntu学习 2013-12-23 15:16 835人阅读 评论(0) 收藏
- MySQL外键创建失败1005原因总结
- mysql 省级数据库,市级数据库。
- mysql数据库,两个数据库之间的链表查询
- MongoDB:mongodb的索引操作
- MongoDB:mongodb的索引操作
- 修改Oracle 11g账户密码过期时间
- DbContext 如何发现模型和数据库连接
- 数据库应用类型:OLTP与OLAP的比较
- SQL Sever 2005 添加约束
- Oracle取上个月一号到上个月底的语句
- mysql在默认的情况下查询不区分大小写
- mysql函数GROUP_CONCAT
- mysql的distinct用法-mysql中如何筛选出非重复的数据
- 存储引擎选择是MySQL数据库一项性能优化工作
- MySQL数据库性能优化之索引优化
- oracle count()查询速度优化
- redis安装与测试
- memcached启动脚本以及telnet测试
- mysql sql 优化