SQL Server 2000 SQL Server 2005 数据库 质疑
问题描述
==========
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 2000 到 Oracle 10g数据库迁移数据类型转化
2010-01-12 从Sql server 2000 到 Oracle 10g数据库迁移数据类型转化 文章分类:数据库 SqlServer 2k转换为Oracle 10g 列名 SqlServer数 ...
- sql server 2000 更改账户默认数据库
每次进入查询分析器都要选择自己的数据库,比较麻烦.可以使用如下sql语句,更改账户默认数据库 exec sp_defaultdb 账号名 , 默认数据库 当然也可以使用企业管理器,如下图所示,双击,即 ...
- 解决SQL Server 2000 错误15023:当前数据库中已存在用户或角色
错误15023:当前数据库中已存在用户或角色 在把远程服务器上的数据库备份还原到本地机后, 给一个"登录"关联一个"用户"时(用户映射),发生错误:" ...
- 实践证明,SQL Server 2000 + 2005 + 2008,完全可以共存
<!-- google_ad_section_start --> 实践证明,SQL Server 2000 + 2005 + 2008,完全可以共存,注意区别: (1)只要实例名不同即可( ...
- SQL Sever 各版本下载 SQL Server 2012下载SQL Server 2008下载SQL Server 2005 下载SQL Server 2000 下载...
SQL Server 2016简体中文企业版 文件名:cn_sql_server_2016_enterprise 64位下载地址:ed2k://|file|cn_sql_server_2016_ent ...
- SQL Server 2000数据库程序设计
第1章 SQL Server概述 1. 有个用户的计算机不能连接到中心机房的SQL Server 2000上.你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL ...
- 当程序开发人员开始抛弃技术时,是否意味着噩梦的开始?抛弃了SQL Server 2000才发现客户的简单问题真的很难解决...
这个话题起源于今天面对一个客户的报表问题,用存储过程写的报表语句,跑在SQL Server 2000上面.客户说有一个地方抱错,而自己开发机器这边,死活找不到一个SQL Server 2000,全部都 ...
- SQL Server 2000 索引视图提高性能2
创建索引视图 创建索引视图所需的步骤与视图的成功实现密不可分. 确保将在视图中引用的所有现有表的 SET 选项都正确. 创建任何新表和视图之前,确保会话的 SET 选项已正确设置. 确保视图定义是确定 ...
- [推荐] TechNet 广播 SQL Server 2000完结篇
TechNet中文网络广播在之前已经推出了SQL Server 2000的基础系列和管理专家系列,使广大听众认识并掌握了SQL Server 2000的管理技巧.本次系列作为前两次系列课程的完结篇 ...
最新文章
- 蓝盾第三代AI防火墙分析
- 开关灯效果思路代码分享
- 修改显卡型号软件_马甲显卡又双叕来了 怎么选知道吗?
- 工作378-封装axios方法
- python写算法快吗_用python写排序算法
- 为什么43%前端开发者想学Vue.js
- 网络限流linux,DockOne微信分享(一九八):容器网络限流实践
- 20165313 课程总结
- Bailian1835 POJ1835 宇航员【模拟】
- mac上启用tftp服务器
- Mac下常用快捷键(转)
- android的listview单项中包含RadioButton,实现RadioButton的单选显示效果
- 英语不好,也能让你看懂man手册
- 内网渗透中wmic的使用
- 那些让人“口吐芬芳”的APP登录骚操作?!!
- 微信无法连接到服务器1-10091,微信能登录但是被限制功能了怎么解封
- 《微信公众平台入门到精通》Vol.1
- python炫酷gui界面_如何炫酷的使用Python
- windows11安装日语输入法(添加输入法)
- S5P4418 Android实时时钟框架介绍
热门文章
- 电脑屏幕分辨率分布统计(基于CNZZ统计数字) 2012-03 更新
- 分治法 —— 黑白棋子移动
- java如何集成百度地图
- Linux中安装Jenkins
- 微信公众平台后台接入简介
- Terracotta
- 手机的WiFi无线网络功能是什么意思?
- matlab的disp函数如何换行
- (6)三棱柱3D实现、多棱柱3D实现
- W: 仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu xenial Release” 没有 Release 文件。 N: 无法认证来自该源的数据,所以使