现在的位置: 首页 > 综合 > 正文

如何实现两个Sybase Adaptive Server之间的数据通信

2017年10月02日 ⁄ 综合 ⁄ 共 2642字 ⁄ 字号 评论关闭

如何实现两个Sybase Adaptive Server之间的数据通信
 在进行以Sybase作为后台数据库的MIS系统开发时,经常会碰到需要在两个Sybase Adaptive Server之间进行数据通信的问题。要解决这一问题通常由两类方法:其一便是在前台来做;这种方法一般是通过建立多个事务,分别连接到不同的Server,在应用程序中通过编程实现数据的交换。这种方法的缺点在于可维护性差,还有一点是由于需要多个事务肯定也会影响效率。另外一类方法就是利用Sybase 的Transact SQL在后台来做。这类方法把数据的通信工作交给了SQL服务器自己去做。这种方法显而易见的一种有点便是可维护性好,当业务发生变化或服务器设置改变时可以很少修改大部分情况是不用修改应用程序。下面举一个简单的例子来介绍一下如何利用Transact
SQL在后台实现SQL服务器之间的数据通信。
---- 假设有两台操作系统都是Windows NT的Sybase SQL服务器LocalServer、RemoteServer,两者能够相互访问即应是通过网络相连的;在LocalServer和RemoteServer上分别有数据库LS_database和RS_database;在数据库LS_database和RS_database里分别有表LS_table和RS_table。
---- 假设现在业务规则是当LS_table更新时需要更新RS_table。
---- 要实现这种业务逻辑首先需要在RemoteServer的RS_database里建立至少一个带参数的存储过程设为pro_upd_rst,用来更新RS_table;其次需要在表LS_table上建立三个触发器:设为update_rst、delete_rst和insert_rst,在这些触发器中调用RS_database中的存储过程。即采用触发器传递参数进行远程存储过程调用(Remote Procedure Calls)的技术来实现。当LS_table发生更新时触发器update_rst、delete_rst和insert_rst中有一个会被触发,通过临时表inserted和deleted能够得到更新的信息,赋给相应变量,传递参数给pro_upd_rst并调用之。
---- 需要提到的一点是Sybase数据库的缺省安装并没有设置RPC,所以还要对LocalServer进行一些设置工作,这一点比较有必要强调尤其是对于初学者来说。这些设置工作主要有以下几点:
运行LocalServer接口程序管理器Dsedit添加一个Server,Server Name设置为"RemoteServer"(可以是其他字符串),编辑Server Address,添加网络协议和端口号,通常选择TCP/IP协议,Network Address 设为"RemoteServer,5000",其中RemoteServer(这里指的是该服务器在网络中的机器名)可以用其IP地址来代替。试一试能否Ping通RemoteServer。Ping通后进行下面的工作。
在LocalServer添加一个远程服务器,可以通过运行LocalServer的Sybase Central,打开LocalServer的"remote servers"文件夹,双击"Add Remote Server",在编辑框内输入一个字符串设为"Remote_Local"(注意区分大小写),在下面的下拉列表框中选择"RemoteServer"(这是第1步中的Server Name),点击下一步后在列表框中选择"sql_server"完成。
重新设置LocalServer一些与RPC有关的参数,也可以通过Sybase Central。右键点击LocalServer,单击谈出菜单的"configure",在下拉列表框种选择"Component Integration Services",注意下面的两个参数"cis rpc handling" 和 "enable cis",这两个参数的缺省值都是"0",应该把它们都改为"1"。由于"enable cis"是静态参数所以修改后需要重起数据库才能生效。最后最好检查一下RemoteServer的"enable
remote access"参数的值是否为"1"(缺省情况应该是"1"否则改为"1"。
---- 其中第1步可以通过编辑接口文件sql.ini(在Sybase根目录的"ini"子目录下)来代替,打开sql.ini在最后加入如下三行:
[RemoteServer] master=TCP,RemoteServer,5000 query= TCP,RemoteServer,5000
        保存并关闭。
---- 第2、3步可以通过系统存储过程"sp_configure"来代替,在SQL Advantage或isql中执行下列语句:
sp_addserver Remote_Local,null,RemoteServer
        go sp_configure "enable cis",1 go sp_configure "cis rpc handling",1
        go
---- LocalServer配置号以后应该测试一下,运行SQL Advantage或isql连接LocalServer执行下列语句"exec Remote_Local.master.dbo.sp_help",再次强调一点其中的Remote_Local区分大小写。
---- 上面所举的只是一个简单的例子,只能在LocalServer上调用RemoteServer上的存储过程,若要在RemoteServer调用上LocalServer上的存储过程则要在RemoteServer进行同样的设置(添加Remote Server、重新配置RemoteServer的参数等),并且要保证LocalServer的"enable remote access"的值为"1"。
14) ASE在windows xp/2000上安装的二个注意的问题
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1522&show=150
本人近日在Windows xp上安装Sybase ASE12.5开发版作学习之用。遇到了一点麻烦,现将解决办法介绍给大家参考,如有还有类似的问题可联系我:email:
learun@hotmail.com

抱歉!评论已关闭.