日期:2014-05-16 浏览次数:20621 次
现在使用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. 改回来了。