Sybase除了大型商用關(guān)系數(shù)據(jù)庫ASE以外,還有非常有名的嵌入式數(shù)據(jù)庫,稱為Adaptive Server Anywhere,到了版本10,就改稱為Sql Anywhere。自從Sybase收購mobile365以后,它也越來越受到更多的關(guān)注了。
當(dāng)你安裝完ASA以后,你會發(fā)現(xiàn)這個(gè)軟件包居然有很大,ASA9大約有170M左右,ASA10的windows版本可以達(dá)到240M左右。
實(shí)際上,我們經(jīng)常能用到的東西僅需要其中幾個(gè)目錄就可以,將這些目錄提取出來,壓縮以后,就4M左右。本文介紹的內(nèi)容僅供學(xué)習(xí)者自己探索,如果商用,請尊重版權(quán)。
1. 必要的環(huán)境變量
ASA9涉及到的環(huán)境變量主要有兩個(gè),
set ASANY9=d:/SybaseASA9
set ASANYSH9=d:/SybaseASA9/Shared
ASA10涉及到的環(huán)境變量主要也是兩個(gè),
set SQLANY10=D:/SybaseASA10
set SQLANYSH10=D:/SybaseASA10
注意變量名稱的變化。所謂share目錄主要用于存放jconnect, sybcentral等jdbc驅(qū)動(dòng)、sybcentral GUI客戶端工具等
2.量體裁衣
原始的目錄結(jié)構(gòu)可能是如下的樣子:
ce
charsets
docs
drivers
h
java
MobiLink
Palm
readme.txt
Samples
scripts
Shared
snmp
support
temp
ultralite
win32
這里有很多都是不需要的。經(jīng)過處理,我可以只留下win32和scripts子目錄就可以讓ASA工作。而shared目錄下邊的jdbc驅(qū)動(dòng)完全是獨(dú)立的,你完全可以把它抽到別的地方。
在做了這樣的工作以后,現(xiàn)下需要寫一個(gè)批處理腳本用于啟動(dòng)ASA數(shù)據(jù)庫。
a. asa-setenv.bat (用于設(shè)置環(huán)境變量)
@echo off
set ASANY9=D:/SybaseASA9
if not "%ASANY9%" == "" set PATH=%ASANY9%/win32;%PATH%
b. asa-init.bat (這個(gè)顯然用于建立ASA的數(shù)據(jù)庫)
@echo off
call "%~dp0asa-setenv.bat"
echo Initializing Database...
echo %ASANY9%/win32/dbinit.exe %*
"%ASANY9%/win32/dbinit.exe" %*
c. asa-startsvr.bat (以Server模式啟動(dòng)ASA數(shù)據(jù)庫)
@echo off
call "%~dp0asa-setenv.bat"
echo Starting Database...
echo %ASANY9%/win32/dbsrv9.exe %*
"%ASANY9%/win32/dbsrv9.exe" %*
d. asa-starteng.bat(以Personal DB的模式啟動(dòng)ASA數(shù)據(jù)庫)
@echo off
call "%~dp0asa-setenv.bat"
echo Starting Database...
echo %ASANY9%/win32/dbeng9.exe %*
"%ASANY9%/win32/dbeng9.exe" %*
e. asa-stop.bat (停止數(shù)據(jù)庫)
@echo off
call "%~dp0asa-setenv.bat"
echo Stopping Database...
echo %ASANY9%/win32/dbstop.exe %*
"%ASANY9%/win32/dbstop.exe" %*
我們來看一個(gè)示例:
1.創(chuàng)建一個(gè)新的ASA數(shù)據(jù)庫文件:
D:/shared/ASA902>asa-init eherodemo.db
Initializing Database...
D:/shared/ASA902/win32/dbinit.exe eherodemo.db
Adaptive Server Anywhere Initialization Utility Version 9.0.2.3302
Creating system tables
Collation sequence: 936ZHO
Creating system views
Setting permissions on system tables and views
Setting option values
Initializing UltraLite deployment option
Database "eherodemo.db" created successfully
2.以Server模式啟動(dòng)eherodemo.db
D:/shared/ASA902>asa-start eherodemo.db
Starting Database...
D:/shared/ASA902/win32/dbsrv9.exe eherodemo.db
ransaction log: eherodemo.log
Starting checkpoint of "eherodemo" (eherodemo.db) at Fri Jul 20 2007 14:20
Finished checkpoint of "eherodemo" (eherodemo.db) at Fri Jul 20 2007 14:20
Database "eherodemo" (eherodemo.db) started at Fri Jul 20 2007 14:20
Database server started at Fri Jul 20 2007 14:20
Trying to start SharedMemory link ...
SharedMemory link started successfully
Trying to start NamedPipes link ...
NamedPipes link started successfully
Trying to start TCPIP link ...
Starting on port 2638
TCPIP link started successfully
Trying to start SPX link ...
SPX communication link not started
Now accepting requests
3. 多帶幾個(gè)參數(shù)來啟動(dòng)
asa-start.bat -x tcpip(ServerPort=2638) -n testdemodb eherodemo.db
表示啟來的數(shù)據(jù)庫的servername是testdemodb,但數(shù)據(jù)庫文件名是eherodemo.db,不帶-n選項(xiàng),則數(shù)據(jù)庫名就是eherodemo
PersonalDB和Server DB的區(qū)別在于,前者只用于單機(jī)客戶端訪問,而后者可以為多個(gè)遠(yuǎn)程客戶端提供并發(fā)訪問。
針對ASA10, 它為ASA9提供了升級工具:
這里有一個(gè)腳本用于簡單的將asa9數(shù)據(jù)庫升級到asa10數(shù)據(jù)庫,腳本內(nèi)容(asa-unload.bat):
@echo off
setlocal
call "%~dp0asa-setenv.bat"
echo Unloading Database...
echo %SQLANY10%/win32/dbunload.exe %*
"%SQLANY10%/win32/dbunload.exe" %*
endlocal
下邊是一個(gè)升級的運(yùn)行結(jié)果:
d:/shared/ASA100>asa-unload.bat -c "dbf=d:/shared/asa902/eherotest.db;uid=dba;pw
d=sql" -n eherotest10.db
Unloading Database...
d:/shared/ASA100/../ASA100/win32/dbunload.exe -c "dbf=d:/shared/asa902/eherotest
.db;uid=dba;pwd=sql" -n eherotest10.db
SQL Anywhere Unload Utility Version 10.0.0.2745
Connecting and initializing
Unloading user and group definitions
Unloading table definitions
Unloading index definitions
Unloading functions
Unloading view definitions
Unloading PRocedures
Unloading triggers
Unloading SQL Remote definitions
Unloading MobiLink definitions
使用起來非常方便。
最后,我們可以借用Openclient或者ASA安裝時(shí)帶有的一個(gè)jdbc連接工具來連接數(shù)據(jù)庫,這叫jutils。大概有1.2M左右。附件放不下。
感覺興趣的可以到郵箱iiihero AT hotmail.com中索取。
我將其打包放到附件里邊。也非常好用。不僅可以連接ASA,也可以用來連接ASE。
新聞熱點(diǎn)
疑難解答
圖片精選