同时访问SQL SERVER和SYBASE数据库
2009-12-25 15:11:28 来源:WEB开发网对于一个系统管理员,要同时管理一个网络中的多个数据库服务器或者是互连网中分属不同网络的多个数据库服务器,首先要解决同时连通访问这些数据库服务器的问题。一般来说,各种数据库必须使用自己相应的客户端工具进行连接,而不能连接另外的数据库。微软公司的SQLSERVER6.0数据库是从SYBASE4.2数据库发展而来,其自身的客户端工具是不能连接SYBASE10或SYBASE11数据库的。另外SYBASE11客户端所带工具WISQLl32可以分段执行一个SQL文件中的任一选择部分,这样给管理数据库服务器,调试存储过程、触发器带来了很大的方便。这个功能在微软公司的SQLSERVER6.0数据库客户端所带工具ISQL_W所不具备的。
在工作实践中,笔者发现只要对SYBASE11客户端进行适当的配置,在WISQLl32的菜单中断开一个已连通的数据库服务器后,连接网络中另一个的数据库服务器,不用重新启动,就可以达到既访问微软的SQLSERVER6.0数据库也能同时访问SYBASE11(或者10)数据库的目的。既给同时管理多个数据库服务器(尤其是SQLSERVER6.0数据库)带来了很大的方便,也使得在SQLSERVER6.0和SYBASE11之间移植存储过程、触发器提供了可能性。本文就笔者自己的实现方法提供给大家参考。
一.系统环境
为了简化起见,假设只在一个网络环境中,只有一台网络服务器,在这台网络服务器上同时安装了MSSQLSERVER6.0、SYBASE11(或者SYBASE10,建议不要同时安装SYBASE11和10两个版本)。不考虑单一网络多台服务器或互联网络多台网络服务器环境。但是无论什么环境,应用同样的方法都可以实现WISQLl32对分布在一台或多台网络服务器上数据库服务器的访问。
1.网络服务器:WINDOWSNT3.51或4.0网络操作系统,内存64MB以上,奔腾133以上,网络协议为TCP/IP,主域控制器名RMYH,网络服务器的计算机名DBSERVER。
2.在DBSERVER网络服务器上同时安装的MSSQLSERVER6.0数据库服务器名为DBSERVER(与网络服务器同名),SYBASE11数据库服务器包含SYBASE11(SQL服务器)、SYBASE11-BS(BACKUP服务器)、SYBASE11-MS(MONITOR服务器)、SYBASE11-HS(HISTORY服务器)四个数据库服务器(SYBASE10数据库服务器只包含SYABSE10,SYBASE10-BS、SYBASE10-MS三个数据库服务器)。
3.客户机:中文WINDOWS95,SYABSEFORWINDOWS95客户端工具
二.配置SYABSEFORWINDOWS95客户端工具
SQLEDIT是SYBASE与平台无关的程序,用来配置客户连接,SQLEDIT用于编辑SYBASE根目录下INI子目录中名为SQL.INI的文件,也可以人工地编辑SQL.INI文件,但是借助SQLEDIT的图形工具要容易一些,并且可以把错误推给SYBASE。SQLEDIT的使用方法请参考有关SYBASE的说明书。本文主要讨论在SQL.INI如何选择参数来使WISQL同时访问MSSQLSERVER和SYBASE11数据库服务器。
WINDOWSNT可以选择NetBEUI、IPX/SPX、TCP/IP三种网络协议来组建网络,SYBASE11(或者SYBASE10)数据库服务器安装时,会根据网络协议来生成NET-LIBRARY驱动程序,三种网络协议都能生成名为NLMSNMP(命名管道)的NET-LIBRARY驱动程序,其中对于TCP/IP网络协议,还多生成一个名为NLWNSCK(软插口)的NET-LIBRARY驱动程序,所以笔者选择使用TCP/IP构成的WINDOWSNT网络作为分析的环境。
使用SQLEDIT或编辑软件配置好的SQL.INI文件内容如下(SQL.INI文件在c:\sybase\ini目录中):
[MSSQL6.0]
$BASE$00=NLMSNMP,\\ dbserver \pipe\sql\ query
$BASE$01=NLWNSCK,dbserver,1433
query=$BASE$00;$BASE$01;
$BASE$02=NLMSNMP,\\dbserver\pipe\sql\query
$BASE$03=NLWNSCK,dbserver,1433
master=$BASE$02;$BASE$03;
[SYBASE11]
$BASE$00=NLWNSCK,dbserver,5000
$BASE$01=NLMSNMP,\\dbserver\pipe\sybase\query
master=$BASE$00;$BASE$01;
$BASE$02=NLWNSCK,dbserver,5000
$BASE$03=NLMSNMP,\\dbserver\pipe\sybase\query
query=$BASE$02;$BASE$03;
[SYBASE11_BS]
$BASE$00=NLWNSCK,dbserver,5001
$BASE$01=NLMSNMP,\\dbserver\pipe\sybase\ backup
query=$BASE$00;$BASE$01;
$BASE$02=NLWNSCK,dbserver,5001
$BASE$03=NLMSNMP,\\dbserver\pipe\sybase\backup
master=$BASE$02;$BASE$03;
[SYBASE11_MS]
$BASE$00=NLWNSCK,dbserver,5002
$BASE$01=NLMSNMP,\\dbserver\pipe\sybase\monitor
master=$BASE$00;$BASE$01;
$BASE$02=NLWNSCK,dbserver,5002
$BASE$03=NLMSNMP,\\dbserver\pipe\sybase\monitor
query=$BASE$02;$BASE$03;
更多精彩
赞助商链接