SQL Server 2000 SQL Server 2005 数据库 质疑
来源:互联网 发布:大型网络枪战游戏大全 编辑:程序博客网 时间:2024/05/18 02:23
问题描述
==========
SQL Server 2005用户数据库由于硬件故障处于“质疑”状态。
解决办法
==========
说明:采用以下数据库急救办法,修复的数据库中的数据在大多情况下都很有可能失败,即使修复成功,数据库中的数据也可能会有丢失,数据完整性会有一定程度的损坏,所以修复后的数据库中的数据不一定可用,请慎重考虑后再选择使用急救后的数据库,因为这些数据虽然已经恢复,但还是问题数据,很有可能会对今后的工作造成潜在的风险。我们建议数据库管理员要对数据库做定期的数据备份和数据库维护。
1.在SQL Server 2005或SQL Server 2008中急救“质疑”数据库的办法
--------------------------------------------------------------------
1)将“质疑”数据库附加至SQL Server中
注意:通常“质疑”数据库都无法成功添加到其他的数据库中,可以通过以下办法任意一个尝试附加:
方法a.将数据库文件.mdf和.ldf文件存放至默认的数据目录中:C:/Program files/Microsoft SQL Server/MSSQL.1/MSSQL/Data/
方法b.利用以下语句,只添加mdf文件
EXEC sp_attach_single_file_db @dbname = 'AdventureWorks',
@physname = N'C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Data/AdventureWorks_Data.mdf';
方法c.创建同名数据库->停止SQL Server服务->替换同名数据库文件->启动SQL Server服务
2)将数据库设置为“单用户模式”
use master
go
alter database test set single_user
go
3)将数据库设置为“紧急模式”
alter database test set emergency
go
4)检查数据库
DBCC CHECKDB('test')
go
5)尝试使用通过重建索引对数据库做“无损”数据恢复
DBCC CHECKDB('test',REPAIR_REBUILD )
Go
6)如果步骤5失败,尝试对数据库做“有损”数据恢复,执行完毕后,注意SQL Server的输出结果,会提供数据库有哪些数据发生损失
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )
Go
参考链接:http://msdn.microsoft.com/zh-cn/library/ms176064(v=SQL.90).aspx
7)如果步骤6失败,尝试通过导出表来获取剩余数据,存储过程等等
use test
go
select * from sys.objects where type='U'
go
参考链接:http://msdn.microsoft.com/zh-cn/library/ms190324(v=SQL.90).aspx
8)当操作完毕后,将数据库设置为“多用户模式”
alter database test set multi_user
go
注意:无论使用什么办法成功地修复了数据库,我们都建议客户能够创建一个新的数据库,将旧的数据库的架构和数据导入新数据库后,废除旧的数据库,以免今后出现潜在的风险。
2.在SQL Server 2000中急救“质疑”数据库的办法
--------------------------------------------------------------------
1)将“质疑”数据库附加至SQL Server中
注意:通常“质疑”数据库都无法成功添加到其他的数据库中,可以通过以下办法任意一个尝试附加:
方法a.利用以下语句,只添加mdf文件
EXEC sp_attach_single_file_db @dbname = 'AdventureWorks',
@physname = N'C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Data/AdventureWorks_Data.mdf';
方法b.创建同名数据库->停止SQL Server服务->替换同名数据库文件->启动SQL Server服务
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf'
2)允许更新服务器配置
use master
go
Sp_configure 'allow updates', 1
Go
Reconfigure with override
Go
3)将数据库设置为“紧急”状态
select * from sysobjects
go
Update master..sysdatabases set status = 32768 where name ='
Go
Select * from sysdatabases
--Check that above UPDATE statement change the status to 32768
Go
执行以上语句后需要重新启动SQL Server服务才能生效。
参考链接:http://msdn.microsoft.com/zh-cn/library/aa260406(v=sql.80).aspx
4)重新创建数据库日志文件
dbcc rebuild_log('DB_name','LDF path and name')
--LDF name should be different with the previous name.
go
Update master..sysdatabases set status = 0 where name ='
go
sp_configure 'allow updates', 0
go
reconfigure with override
go
5)将数据库设置为“单用户模式”
select * from sysobjects
go
Update master..sysdatabases set status = 4096 where name ='
Go
Select * from sysdatabases
--Check that above UPDATE statement change the status to 4096
Go
执行以上语句后需要重新启动SQL Server服务才能生效。
6)检查数据库
DBCC CHECKDB('test')
go
7)尝试使用通过重建索引对数据库做“无损”数据恢复
DBCC CHECKDB('test',REPAIR_REBUILD )
Go
8)如果步骤7失败,尝试对数据库做“有损”数据恢复,执行完毕后,注意SQL Server的输出结果,会提供数据库有哪些数据发生损失
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )
Go
参考链接:http://msdn.microsoft.com/zh-cn/library/aa258278(v=sql.80).aspx
9)如果步骤8失败,尝试通过导出表来获取剩余数据,存储过程等等
select * from sysobjects
go
Update master..sysdatabases set status = 32768 where name ='
Go
Select * from sysdatabases
--Check that above UPDATE statement change the status to 32768
Go
重新启动SQL Server服务使以上数据库状态修改生效。
use test
go
select * from sysobjects where type='U'
go
参考链接:http://msdn.microsoft.com/zh-cn/library/aa260447(v=sql.80).aspx
8)当操作完毕后,将数据库设置为“正常状态”
select * from sysobjects
go
Update master..sysdatabases set status = 0 where name ='
Go
Select * from sysdatabases
--Check that above UPDATE statement change the status to 0
Go
重新启动SQL Server服务使以上数据库状态修改生效。
注意:无论使用什么办法成功地修复了数据库,我们都建议客户能够创建一个新的数据库,将旧的数据库的架构和数据导入新数据库后,废除旧的数据库,以免今后出现潜在的风险。
- SQL Server 2000 SQL Server 2005 数据库 质疑
- sql server 质疑数据库恢复
- sql server 数据库质疑的解决方法
- SQL Server 2000中数据库质疑的恢复方法
- sql server 2005 如何恢复被质疑的数据库
- 数据库质疑修复总结 For SQL Server 2000/2005/2008/2008R2
- 数据库质疑修复总结 For SQL Server 2000/2005/2008/2008R2
- 数据库质疑修复总结 For SQL Server 2000/2005/2008/2008R2
- 数据库质疑修复总结 For SQL Server 2000/2005/2008/2008R2
- SQL Server 2005数据库
- sql server 2005数据库
- SQL Server 2005数据库转到SQL Server 2000的步骤
- 附加 SQL Server 2005 数据库到SQL Server 2000
- sql server 2005还原sql server 2000的数据库备份
- SQL Server 2000 附加 SQL Server 2005 数据库具体方法
- SQL Server 2000 附加 SQL Server 2005 数据库具体方法
- SQL Server 2000 和 SQL Server 2005 连接数据库
- Microsoft SQL Server 2005 数据库还原 Microsoft SQL Server 2000
- cvLoadImage,cvCloneImage的内存泄露问题
- SQL Server 2005升级失败: ERROR: 1642
- IBM EMC HP HDS DELL NETAPP SUN visio图
- 简易天气预报
- AspNetPager分页实例
- SQL Server 2000 SQL Server 2005 数据库 质疑
- linux输入子系统(1)
- JQuery表单验证
- 求教 myeclipse hibernate finbyproperty方法的问题
- 关于swing的table的tableModel
- 实现接口的方法都必须是virtual的
- SQL Server 2005 安装更新失败: ERROR:29511 创建本地用户组失败
- SQL语句转VB.net 用SQL字符串
- linux输入子系统(2)