1. 苏葳的备忘录首页
  2. 数据库

Sybase isql 15.0与11.3版本区别

sybase isql 批处理原来Sybase数据库安装的是12.5版本,字符集用的cp850,客户端装的是11.3版本客户端,因为此版本客户端体积小速度快,尤其是显示数据库中存储过程时比12.5版客户端优势明显。改下两处配置后,在查询工具和Sybase Central中都可正常显示中文。但是旧版客户端毕竟无法支持新版数据库中的一些特性,所以一直考虑升级客户端版本。

原有11.3版本写的一个批量导出存储过程的批处理:

isql -Uquery -Ppasssword -Sservername -i 1crtprocout.sql -o 3crtsql.bat

将sql语句(1crtprocout.sql ):

use MYDB
go
select 'defncopy -Uquery -Ppasssword -Sservername  out SPALL\'+name+'.sql MYDB '+name from sysobjects
where type='P'
go

执行输出到3crtsql.bat中。一直正常。然后执行3crtsql.bat就可导出MYDB全部存储过程到SPALL目录下。

在将sybase客户端升级到15.0后,执行却出错,查看错误原因,除字符集问题外(原库字符集为cp850,有些问题),在执行生成的sql批处理时,单条语句由于自动断行而无法正确执行。在命令行里手工跑,发现其实生成的3crtsql.bat按屏幕列宽80断行了,而在11.3中无此问题。

如何办呢?将isql语句里,加上-w 1000参数,指定列宽为1000才换行,这样,在生成的3crtsql.bat里,就不会有断行的defncopy语句了。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/272.html

发表评论

邮箱地址不会被公开。 必填项已用*标注