一个加密过的老版本的Sybase 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"
这里要将c:\\shared\\ASA5\\Win32替换为真正的ASA5路径。WOD50T.dll就是实际的driver了。
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驱动的注册以及事先的*****都是必要的准备步骤。