有感于昨晚另一个朋友发紧急邮件让我帮忙看看他的一个ASA5数据库,说是密码忘了,用户名还不是DBA, 结果怎么也访问不了,经过一段时间的摸索,终于成功将密码重置。
以下是我在2011年4月份整理的一篇短文, 重新整理于此,以供参考。ASA5.0实在是太老了,重置用户名的密码也需要一番功夫。
这里再帖出原文:
昨天,论坛上的一位朋友求助,说是一个很老的版本的ASA5.0数据库,没有安装文件,死活连不上,默认用户密码DBA/SQL不能用,似乎改掉了。
我回忆了一下,似乎这个版本对应的是PowerBuilder6.0/6.5上的ASA数据库。开始我建议使用jutils2.0(ASE/ASA自带的)工具进行连接,没想到,总是失败,看来jutils中的jdbc驱动相对于ASA5太新了,不能用。
如果有PB6,也许比较好弄。手头没有。只好让他把ASA5二进制可执行文件整体打包给我。
1. 首先要恢复db文件中的用户密码.
找到十六进制的44 42 41,将对应的一串值换为如下图所示:
将用户密码重置为: dba/sql
2. 注册ASA5的ODBC驱动:
其reg内容如下, 直接双击执行。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI]
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]
"Sybase SQL Anywhere 5.0"="Installed"
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Translators]
"Sybase SQL Anywhere 5.0 Translator"="Installed"
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0]
"Driver"="C:\\shared\\ASA5\\Win32\\WOD50T.DLL"
"Setup"="C:\\shared\\ASA5\\Win32\\WOD50T.DLL"
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0 Translator]
"Setup"="C:\\shared\\ASA5\\Win32\\WTR50T.DLL"
"Driver"="C:\\shared\\ASA5\\Win32\\WTR50T.DLL"
这里ASA5的路径依据你机器上ASA5安装或部署的实际情况定。
3. 使用ODBC管理器添加ODBC数据源
选择驱动"Sybase SQL Anywhere 5.0",
分别填入:
Datasurce name: DBGL_DB
UserID: dba
Passwd: sql
Database file:db文件全路径
Databas Name: DBGL_DB
4. 使用ODBC管理工具,如WinSQL5,即可浏览该数据库中的数据。
连接上以后,table--> browse data即可。
最终导出,可以使用WinSQL的逐表导出,也可以使用程序实现。
当然,利用Access的功能,可以直接导出为一个Access数据库。使用SQL Server的DTS,可以直接导出到其它ODBC数据源。
使用PowerBuilder的pipeline,也可以实现导出。
总之,前边的ODBC驱动的注册以及事先的crack都是必要的准备步骤。