问题描述

==========

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 数据库 质疑相关推荐

  1. 从Sql server 2000 到 Oracle 10g数据库迁移数据类型转化

    2010-01-12 从Sql server 2000 到 Oracle 10g数据库迁移数据类型转化 文章分类:数据库 SqlServer 2k转换为Oracle 10g 列名 SqlServer数 ...

  2. sql server 2000 更改账户默认数据库

    每次进入查询分析器都要选择自己的数据库,比较麻烦.可以使用如下sql语句,更改账户默认数据库 exec sp_defaultdb 账号名 , 默认数据库 当然也可以使用企业管理器,如下图所示,双击,即 ...

  3. 解决SQL Server 2000 错误15023:当前数据库中已存在用户或角色

    错误15023:当前数据库中已存在用户或角色 在把远程服务器上的数据库备份还原到本地机后, 给一个"登录"关联一个"用户"时(用户映射),发生错误:" ...

  4. 实践证明,SQL Server 2000 + 2005 + 2008,完全可以共存

    <!-- google_ad_section_start --> 实践证明,SQL Server 2000 + 2005 + 2008,完全可以共存,注意区别: (1)只要实例名不同即可( ...

  5. 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 ...

  6. SQL Server 2000数据库程序设计

    第1章 SQL Server概述 1. 有个用户的计算机不能连接到中心机房的SQL Server 2000上.你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL ...

  7. 当程序开发人员开始抛弃技术时,是否意味着噩梦的开始?抛弃了SQL Server 2000才发现客户的简单问题真的很难解决...

    这个话题起源于今天面对一个客户的报表问题,用存储过程写的报表语句,跑在SQL Server 2000上面.客户说有一个地方抱错,而自己开发机器这边,死活找不到一个SQL Server 2000,全部都 ...

  8. SQL Server 2000 索引视图提高性能2

    创建索引视图 创建索引视图所需的步骤与视图的成功实现密不可分. 确保将在视图中引用的所有现有表的 SET 选项都正确. 创建任何新表和视图之前,确保会话的 SET 选项已正确设置. 确保视图定义是确定 ...

  9. [推荐] TechNet 广播 SQL Server 2000完结篇

      TechNet中文网络广播在之前已经推出了SQL Server 2000的基础系列和管理专家系列,使广大听众认识并掌握了SQL Server 2000的管理技巧.本次系列作为前两次系列课程的完结篇 ...

最新文章

  1. 蓝盾第三代AI防火墙分析
  2. 开关灯效果思路代码分享
  3. 修改显卡型号软件_马甲显卡又双叕来了 怎么选知道吗?
  4. 工作378-封装axios方法
  5. python写算法快吗_用python写排序算法
  6. 为什么43%前端开发者想学Vue.js
  7. 网络限流linux,DockOne微信分享(一九八):容器网络限流实践
  8. 20165313 课程总结
  9. Bailian1835 POJ1835 宇航员【模拟】
  10. mac上启用tftp服务器
  11. Mac下常用快捷键(转)
  12. android的listview单项中包含RadioButton,实现RadioButton的单选显示效果
  13. 英语不好,也能让你看懂man手册
  14. 内网渗透中wmic的使用
  15. 那些让人“口吐芬芳”的APP登录骚操作?!!
  16. 微信无法连接到服务器1-10091,微信能登录但是被限制功能了怎么解封
  17. 《微信公众平台入门到精通》Vol.1
  18. python炫酷gui界面_如何炫酷的使用Python
  19. windows11安装日语输入法(添加输入法)
  20. S5P4418 Android实时时钟框架介绍

热门文章

  1. 电脑屏幕分辨率分布统计(基于CNZZ统计数字) 2012-03 更新
  2. 分治法 —— 黑白棋子移动
  3. java如何集成百度地图
  4. Linux中安装Jenkins
  5. 微信公众平台后台接入简介
  6. Terracotta
  7. 手机的WiFi无线网络功能是什么意思?
  8. matlab的disp函数如何换行
  9. (6)三棱柱3D实现、多棱柱3D实现
  10. W: 仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu xenial Release” 没有 Release 文件。 N: 无法认证来自该源的数据,所以使