日期:2014-05-16  浏览次数:20631 次

也说说Sybase ASE数据库的基本使用

现在使用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. 改回来了。