現在使用Sybase ASE數據庫的人不太多,在國內,人們往往籠而統之的叫ASE為Sybase數據庫。實際上,Sybase有多款數據庫產品。
以Windows平台為例,我個人覺得Sybase ASE還是挺簡單易用的。我對簡單易用的定義是:
1. 容易安裝
2. 容易遷移,最好是接近綠色
3. 使用簡單 以前打包過Oracle安裝以後的文件,需要一大堆的預處理。讓人心煩。尤其是碰到我這種懶人,只想裝一次,換一台機器,就直接拷貝,還想繼續使用,而不想重新安裝。Oracle能讓你吃些苦頭。至少要不少手動步驟才能讓另一份拷貝能完全工作。
MySQL和PostgreSQL可以直接自己build一個非安裝版本,自己定義預裝腳本。換一台機器,遷移起來也非常方便。
比較起來,其實Sybase ASE也是非常方便。我在機器HostA上裝了一份ASE,後來添加機器了,我只想在HostB上搞一份基本上一樣的ASE,又不想重新安裝。拷貝一份過去試試。(不考慮license的問題)。居然只需要很少的改動就可以運行。
以ASE12.5為例,版本較老:-),新版本更好用。
在機器A上的目錄結構如下:
D:\SybaseASE125>dir/b
ASE-12_5
ASEP
charsets
collate
data
docs-45_55
EFTS-12_5
EJB-12_5
ini
installed
jConnect-5_5
JS-12_5
jutils-2_0
locales
log.txt
OCS-12_5
ODBC
OLEDB
RPL-12_5
Shared
shared-1_0
SNMP-1_0
sqladv-12_5
SQLRemote
Sybase.bat
Sybase.env
sybcent41
SYSAM-1_0
uninstall
WS-12_5
_jvm
其中最關鍵的就是Sybase.bat這個環境變量文件。將整個根目錄SybaseASE125拷貝到HostB的D:\下,你就有機會運行ASE數據庫服務了。也不需要把Sybase.bat文件中的變量值手動設定到用戶/系統環境變量當中。
進到ASE-12_5/install目錄當中,有一個文件:RUN_SEANLAPTOP.bat
rem
rem Adaptive Server Information:
rem name: SEANLAPTOP
rem master device: d:\SybaseASE125\data\master.dat
rem server page size: 2048
rem master device size: 30
rem errorlog: d:\SybaseASE125\ASE-12_5\install\SEANLAPTOP.log
rem interfaces: d:\SybaseASE125\ini
rem
call d:\sybasease125\Sybase.bat
d:\SybaseASE125\ASE-12_5\bin\sqlsrvr.exe -dd:\SybaseASE125\data\master.dat -sSEANLAPTOP -ed:\SybaseASE125\ASE-12_5\install\SEANLAPTOP.log -id:\SybaseASE125\ini -Md:\SybaseASE125\ASE-12_5
在其中添加粗體裡的內容。
再一步就是改動ini目錄下邊的sql.ini,將其中的機器名hostA換為機器hostB。
[hostA_XP]
master=NLWNSCK,hostA,5004
query=NLWNSCK,hostA,5004
[hostA]
master=NLWNSCK,hostA,5000
query=NLWNSCK,hostA,5000
[hostA_BS]
master=NLWNSCK,hostA,5001
query=NLWNSCK,hostA,5001
[hostA_MS]
master=NLWNSCK,hostA,5002
query=NLWNSCK,hostA,5002
最後運行RUN_SEANLAPTOP.bat即可。
至於查詢工具, 12.5中有sql advantage, jisql。一個是c開發的,一個是Java開發的。都還可以使用。
進到SybaseASE125\sqladv-12_5目錄,寫一個批處理文件(start_sqladv.bat):
@echo off
call d:\SybaseASE125\Sybase.bat
start sqladv.exe
運行這個批處理即可啟動SQL Advantage.
以下是運行示例圖:
1. 查詢所有數據庫中的“進程(會話)"
select * from sysprocesses
2. 找到某個會話運行的SQL語句:
dbcc traceon(3604)
go
dbcc sqltext(17)
go
3. 改密碼
sp_passWord null, 'new123',sa
(1 row affected)
(return status = 0)
再把密碼改回去:
sp_passWord 'new123', null, sa
出錯:
Server Message: Number 10317, Severity 14
Procedure 'sp_passWord', Line 110:
The specifIEd passWord is too short. PassWords must be at least 6 character(s) long .
Server Message: Number 17720, Severity 16
Procedure 'sp_passWord', Line 120:
Error: Unable to set the PassWord.
(1 row affected)
(return status = 1)
默認有密碼長度限制,那就把密碼長度限制去掉了,再改:
sp_configure "minimum passWord length", 0
sp_passWord 'new123', null, sa
OK. 改回來了。