SQL SERVER数据恢复过程笔记

4月5日 要求SQL SERVER 2000数据库ASIA因为硬盘损坏,经抢救后只取得了mdf和ldf文件
开始以为只取得了MDF文件,因此先进行
EXEC sp_attach_single_file_db  @dbname = N'ASIADB01',
   @physname = N'D:/Microsoft SQL Server/MSSQL/Data/ASIADB01_Data.mdf'
   但提示不成功;
   再次尝试先建好一数据库,再将其分离后,把日志文件删除掉,再执行挂接,仍不成功.

后来终于找到了日志文件,经挂接成功,但发现数据库显示为只读,原来MDF是从光盘上拷贝过来,文件属性为只读,改之后即可将数据库只读属性去掉.


EXEC sp_attach_db @dbname = N'ASIADB01',
   @filename1 = N'd:/Microsoft SQL Server/MSSQL/Data/ASIADB01_Data.mdf',
   @filename2 = N'd:/Microsoft SQL Server/MSSQL/Data/ASIADB01_log.ldf'


   后来执行ASIA应用程序,登陆等过程没有问题,但在程序中在调用单号时显示ADODC1报错,[sql server] [odbc] 数据连接中断,开始以为是
   应用程序方面的问题,因为包括操作系统,数据库服务器,应用程序等均为全新安装,应用程序中也不时报出控件未注册的错误,一直怀疑是应用程序方面
   的错误.因为香港软件供应商客服人员也一直在沿这个思路在解决问题,忙了一天未有任何成果.

   第二天我在自己电脑上安装应用程序,用sql server事件探查器,监视出错时执行的SQL语句,后COPY到查询分析器中执行,发现以下问题:

SELECT ZKAKEH2.KASRDEN From ZKAKEH2

服务器: 消息 21,级别 24,状态 1,行 1
警告: 严重错误 823 发生于 04  5 2005  7:43PM

连接中断

SET ROWCOUNT 100000;
SELECT  TOP 1000 * FROM ZKAKEH2时没有问题,但查取10000条记录时即报连接中断,初步可以判断数据库方面出了问题.

后用DBCC检查表和数据库时出现大量的错误
DBCC CHECKTABLE ('ZKAKEH2')
DBCC CHECKDB ('ASIADB01')

经用修复选项,终不能成功.
DBCC CHECKDB ('ASIADB01',REPAIR_REBUILD)
DBCC CHECKDB ('ASIADB01',repair_allow_data_loss)

没办法,采用先新建一个含同样对象的数据库,再用DTS从已坏的数据库中将数据全数导入进来.中间因为有几个表在重建库时输入了资料,导入数据不成功,
先将数据清除:
truncate table kparam3;
truncate table zhito;
truncate table zmoney;
truncate table ztrno;
重新导入这四个表的数据,一切OK.
再用DBCC工具进行检查,PASS,终于见到了一丝绪光.
重新设置应用程序ODBC,用程序进行连接,成功!谢天谢地.

总结:
数据库应该及时进行备份(包括日志备份),本CASE中就是因为缺少备份文件,只有硬盘坏了之后抢救出来的MDF和LDF文件,因此费了一番周折.在碰到这种问题时,
应先从数据库方面考虑,而不是怀疑前端应用程序方面的问题:)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值