查看: 6447|回复: 0
打印 上一主题 下一主题

恢复Sybase SQL Anywhere 数据库的好方法

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-26 10:56:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
SybaseSQLAnywhere是Sybase公司开发的一种小型数据库产品,有单用户版和多用户版,可安装在Win95、Win98、NT、Netware等平台。SQLAnywhere的SQL语句基本上和SybaseAdaptiveServer一致;而且功能也相当强;PowerBuilder5.0以上的版本都自带一个SQLAnywhere。因此,对使用笔记本或单机的开发人员来说,选择SQLAnywhere作为数据库来开发应用程序是十分方便的,故SQLAnywhere得到了普遍的应用。但是突然断电或不正常关机都有可能破坏SQLAnywhere的数据,由此造成很大的损失,下面就来介绍一种恢复被破坏的数据库的方法。


SQLAnywhere数据库由后缀分别为.db和.log的两个文件组成。其中.db的文件是用来存放数据库信息(包括表结构、视图、数据等)。而.log文件是个日志文件,用来记录用户每一次对数据库有影响的操作,例如创建或删除表、视图、触发器等对象,插入、删除、修改表中的数据等。所以只要把.log文件的内容转换成一条条的SQL语句,然后再建一个空的数据库,再执行这些SQL语句,则恢复数据的问题就解决了。Sybase公司提供了几个实用程序来完成以上功能。


现假设数据库系统文件分别名为mydb.db和mydb.log。如果mydb.db已被破坏。现在创建一个新的数据库,假设文件分别名为new.db和new.log。


用Sybase提供的dbtranw.exe,DB32W.EXE,rtsqlw.exe等实用程序来完成恢复工作,步骤如下表。




步骤命令功能
  1. 1.Dbtranw-r-k-ymydb.logdb.sql把.log
  2. 文件的内容转换成的SQL语句

  3. 2.Attrib-rmydb.db
  4. 修改只读文件mydb.db的属性为可写

  5. 3.Attrib-rmydb.log
  6. 修改只读文件mydb.log的属性为可写
  7. 4.Copynew.dbmydb.db
  8. 用新的空库文件覆盖被破坏的旧库文件

  9. 5.Copynew.logmydb.log
  10. 用新的日志文件覆盖旧的日志文件

  11. 6.DB32W.EXE-dmydb.db
  12. 启动数据库SQLAnywhere

  13. 7.Rtsqlw -q-c"userid=dba;
  14. password=sql"readdb.sql
  15. 执行从.log文件中倒出来的SQL语句
复制代码
其中第一步的功能是把旧的日志文件转换成SQL语句,并放在一个名为db.sql的文件中,特别注意它只能在第五步之前操作,否则日志文件会被new.log所覆盖,而导致无法恢复数据。最后一步的功能是从文件db.sql中读取SQL语句并执行,假设数据库的用户名为dba,而口令为sql。有关各个命令及参数据的更详细的用法可以查看相应的帮助。在此提醒用户注意:.log文件不能随便删除,否则恢复的数据就不完整。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表