程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> Sybase打開SQL Advantage 12.5.1報錯:Internal failure while initia

Sybase打開SQL Advantage 12.5.1報錯:Internal failure while initia

編輯:SyBase教程

Sybase客戶端打開SQL Advantage 12.5.1報錯:Internal failure while initializing SQL Advantage問題有很多在網上找了很久沒找到適當的解決方法,下面我們一起來看我的解決步驟吧。

1 打開SQL Advantage報錯:Internal failure while initializing SQL Advantage
前幾天在用sybase win客戶端(OC 12.5.1)的時候,遇到了一個問題。每次打開SQL Advantage 12.5.1後,如果強制關閉窗口(例如有時界面卡死強退),那麼再次打開就會報錯:

1.Internal failure while initializing SQL Advantage. 2.Please check that Open Client is configured correctly. 正如下圖所示,奇怪的是如果這時候重啟電腦的話,那麼打開SQL Advantage就正常。
 

2 查看報錯信息:sybinit.err文件
正如下圖所示,每次初始化SQL Advantage失敗後,都會在這個文件中顯示:

sybase客戶端打開SQL Advantage 12.5.1報錯

The context allocation routine failed when it tried to load localization files!!
One or more following problems may caused the failure

。按照文件中的提示,檢查了SYBASE的環境變量值確實是D:\sybase,同時在D:\sybase\locales\locales.dat文件中LANG的值也為zh_CN。
 

3 猜想:OC客戶端產生系統臨時文件
在GG和BD無果後,尋思為什麼SQL Advantage在電腦重啟後又能夠正常工作?當時“最可能”的猜想就是:在強制關閉前,OC端會產生一些臨時文件,保存一些配置信息,電腦關閉後會自動清除這些文件。於是做了一個測試,在報錯之後,立馬使用CCleaner清理系統文件。然後再次打開SQL Advantage,結果還是報錯。猜想失敗!!!

報錯信息sybinit.err文件

4 系統環境變量:windows中“/”和“\”
折騰了幾次,還是沒找到方法。大致看了下GG的搜索結果,提到了PATH環境變量。於是查看了下自己的。結果發現關於SYBASE需要的幾個配置全部都有而且也都對。認真比較了幾次,還是沒發現異常。突然發現在PATH配置內容的末尾竟然出現了不和諧因素:“/”。如圖所示,這是之前在安裝jdk時,配置的環境變量。平常沒注意在windows中設置目錄要使用“\”,而不是“/”,不然會導致出現找不到路徑的錯誤。於是把PATH變量中的兩個“/”改成“\”,然後打開SQL Advantage,竟然正常了!
 系統環境變量PATH

5 延伸:其它不當配置也會報同樣的錯誤
在搞定後,特地上GG搜索了下。其中,sybase官方論壇上的兩個提問比較有代表性

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之前博主遇到的不同:

1.The context allocation routine failed. 2.The following problem caused the failure: 3.Invalid context version. 根據建議:建立一個.bat批處理文件(博主的示例)

1.set SYBASE=D:\Sybase2.set SYBASE_OCS=OCS-12_53.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命令查看了自己電腦的系統環境變量和用戶環境變量。結果如下圖所示。

dos窗口中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或者沒有正確設置。因此,解決這個問題的關鍵在於兩個地方:

1.set命令查看系統中SYBASE的環境變量是否設置正確(若否,使用bat批處理文件或者直接使用set命令設置);2.檢查系統環境變量PATH中關於%SYBASE%、%SYBASE_OCS%等是否設置為對應的SYBASE安裝路徑。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved