Sybase客户端打开SQL Advantage 12.5.1报错:Internal failure while initializing SQL Advantage(二)
1 打开SQL Advantage报错:Internal failure while initializing SQL Advantage
在sybase官方论坛上找到了两个比较有代表性的提问。二者共同的特点就是之前安装的都是SQL Advantage 11.5.1.3的版本,然后想使用12.5.1的版本(博主只装了12.5.1)。在安装好这两个客户端后,打开SQL Advantage就会报错。根据这两个提问并结合自己的理解,列出解决该问题的参考方法:
2.1 提问1:SQL Advantage 12.5.1 and OC 12
提问原地址:点击查看。大致的意思就是:之前安装了Open Client 12和SQL Advantage 11.5.1.3 ,由于想要使用最新的SQL Advantage 12.5.1,于是从另外一台电脑上直接拷贝过来。但是由于之前11.5.1.3设置的环境变量导致当尝试运行SQL Advantage 12.5.1的时候,都会报错并在sqladv-12_5的文件夹下面产生一个sybinit.err文件。文件内容和vfhky之前博主遇到的不同:
The context allocation routine failed.
The following problem caused the failure:
Invalid context version.
根据建议:建立一个.bat批处理文件(博主的示例)
set SYBASE=D:\Sybase
set SYBASE_OCS=OCS-12_5
D:\Sybase\sqladv-12_5\sqladv.exe
这样设置好OC客户端的环境变量后,发现拷贝过来的sybase客户端还需要添加charsets、ini、locales文件夹。于是添加这些文件夹,最后测试成功。
2.2 提问2:Sybase Central 4.3 and SQL Advantage 12.5
提问原地址:点击查看。大致的意思就是:之前安装过版本11.5.1.3和12.5.4的SQL Advantage ,每次“Open SQL Advantage”的时候,都会报错“Internal failure while initializing SQL Advantage. Please check that Open Client is configured correctly.”。其根本因是由于之前11.5.1.3的版本中的一些DLLS文件最终未删除还在%windows%\system32目录下,而这个目录在系统环境变量PATH中处于优先地位,因此在搜索支持sqladv.exe的Open Client的函数库文件DLLS时,会优先搜索11.5.1.3的DLLS而不是12.5.4的DLLS文件。
根据建议:通过调整在dos窗口中输入set命令查看%SYBASE%和%SYBASE_OCS%的选项是否正确,若否则建立一个batch批处理文件(范例见2.1小节),设置好12.5.4的环境变量%SYBASE%和%SYBASE_OCS%的值。博主后来用set命令查看了自己电脑的系统环境变量和用户环境变量。结果如下图所示。
3 该问题的经验总结
关于“Sybase win客户端打开SQL Advantage 12.5.1报错:Internal failure while initializing SQL Advantag”的问题,主要是环境变量的问题引起的。博主的情况是只安装了SQL Advantage12.5.1的版本,而论坛上两位提问者同时安装了11.5和12.5的版本。博主是把系统环境变量PATH中的一个变量写错了(“\”错写成了“/”),而论坛上的是之前11.5版本的SQLAdvantage的环境变量设置优先于版本12.5或者没有正确设置。因此,解决这个问题的关键在于两个地方:
set命令查看系统中SYBASE的环境变量是否设置正确(若否,使用bat批处理文件或者直接使用set命令设置);
检查系统环境变量PATH中关于%SYBASE%、%SYBASE_OCS%等是否设置为对应的SYBASE安装路径。
Comments »