Additional Blogs by Members
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

      我们可以在IQ 15中通过创建远程server,建立代理表或者INSERT LOCATION语句访问ASE数据库中的数据。在IQ 12.7和IQ 15.1、15.2等版本中,用户普遍使用asejdbc serve class访问ASE。从IQ 15.4开始,SAP Sybase建议用户不要再使用这种server class了,建议使用aseodbc访问ASE Server在IQ 16版本中,asejdbc驱动方式甚至已经从软件中移除了。除了这些原因之外,使用aseodbc的性能也要比asejdbc高

     本文将向大家介绍IQ中通过aseodbc server class创建远程server访问ASE Server的配置步骤,它适用于IQ 15.2、15.4和16等版本。本文所介绍的配置方法基于如下环境:

     * ASE Server 15.7 ESD#2 For Linux x86_64

     * IQ 15.2 ESD#3.10 For Linux x86_64

     * SAP Sybase SDK 15.7 For Linux x86_64(包含ASE ODBC Driver)

     *  为了简单起见,假设ASE Server和IQ Server安装在相同的机器上,并且使用ASE 15.7中已带的ASE ODBC 64bit Drvier。

     * ASE Server字符集iso_1,sort order是 bin_iso_1

     * IQ Server的字符集是936ZHO

     

     下面是配置步骤和相关注意事项:

1. 设置sybiq os用户的环境变量

    编辑.bash_profile,修改或增加如下环境变量:

LANG=zh_CN

LD_LIBRARY_PATH= /opt/sybase/ase157/DataAccess64/ODBC/lib:/opt/sybase/ase157/OCS-15_0/lib:/opt/sybase/ase157/OCS-15_0/lib3p64:$LD_LIBRARY_PATH

export LANG LD_LIBRARY_PATH
    
     说明:假设ASE安装在/opt/sybase/ase157目录下

2. 使用sybiq重新登录操作系统,启动iq demo数据库
cd $IQDIR15/demo
start_iq @iqdemo.cfg iqdemo.db
 
3. 使用ase157 os账户登陆操作系统, 在ASE Server中安装ASE ODBC Driver需要的存储过程


cd $SYBASE/DataAccess64/ODBC/sp
./install_odbc_sprocs  server  username  password

说明:insall_odc_sprocs是sybase提供的一个shell脚本,安装ODBC Driver用到的存储过程。这里的Server是指$SYBASE/interfaces中的Severname

4. 使用dbisql以DBA用户连接到demo数据库
dbisql -c "uid=DBA;pwd=sql" -nogui

执行如下语句进行配置:
(1) create server myase class 'aseodbc' using 'Driver=libsybdrvodb.so;Server=DBNode1;Port=5080;CharSet=cp936;Database=tpcdb'
说明:如果ASE Server的字符集是iso_1,那么需要制定CharSet=cp936,否则通过代理表访问ASE数据库时汉字会有乱码问题;此外还需要
         把ASE Server中的 disable character set conversion选项值设置为1(修改设置后需要重启ASE Server)。

(2) CREATE EXTERNLOGIN DBA TO myase REMOTE LOGIN tpc_user IDENTIFIED BY tpc_pwd

(3) forward to myase {select @@version}
说明:如果这个语句能够返回ASE Server的版本,那么远程server配置成功。

(4)  CREATE EXISTING TABLE p_test11 AT 'myase.tpcdb.dbo.test11'
说明:这个语句创建代理表,IQ中的代理表名为p_test11,实际的表在ASE的tpcdb数据库中,表名为test11。

(5) 执行查询,访问代理表:
     select * from p_test11

(6) 执行insert location

  select * into t11 from p_test11 where 1=2     

  insert into t11 location 'myase.tpcdb'  {select * from test11}

说明:insert location中的server名myase应该出现在$SYBASE/interfaces中,否则会报错。