同时访问SQL SERVER和SYBASE数据库


----对于一个系统管理员,要同时管理一个网络中的多个数据库服务器或者是互连网中分属不同网络的多个数据库服务器,首先要解决同时连通访问这些数据库服务器的问题。一般来说,各种数据库必须使用自己相应的客户端工具进行连接,而不能连接另外的数据库。微软公司的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:sybaseini目录中):

[MSSQL6.0]
$BASE$00=NLMSNMP,\dbserverpipesqlquery
$BASE$01=NLWNSCK,dbserver,1433
query=$BASE$00;$BASE$01;
$BASE$02=NLMSNMP,\dbserverpipesqlquery
$BASE$03=NLWNSCK,dbserver,1433
master=$BASE$02;$BASE$03;

[SYBASE11]
$BASE$00=NLWNSCK,dbserver,5000
$BASE$01=NLMSNMP,\dbserverpipesybasequery
master=$BASE$00;$BASE$01;
$BASE$02=NLWNSCK,dbserver,5000
$BASE$03=NLMSNMP,\dbserverpipesybasequery
query=$BASE$02;$BASE$03;

[SYBASE11_BS]
$BASE$00=NLWNSCK,dbserver,5001
$BASE$01=NLMSNMP,\dbserverpipesybasebackup
query=$BASE$00;$BASE$01;
$BASE$02=NLWNSCK,dbserver,5001
$BASE$03=NLMSNMP,\dbserverpipesybaseackup
master=$BASE$02;$BASE$03;

[SYBASE11_MS]
$BASE$00=NLWNSCK,dbserver,5002
$BASE$01=NLMSNMP,\dbserverpipesybasemonitor
master=$BASE$00;$BASE$01;
$BASE$02=NLWNSCK,dbserver,5002
$BASE$03=NLMSNMP,\dbserverpipesybasemonitor
query=$BASE$02;$BASE$03;

[SYBASE11_HS]
$BASE$00=NLWNSCK,dbserver,5003
$BASE$01=NLMSNMP,\dbserverpipesybasehist
master=$BASE$00;$BASE$01;
$BASE$02=NLWNSCK,dbserver,5003
$BASE$03=NLMSNMP,\dbserverpipesybasehist
query=$BASE$02;$BASE$03;

[SYBASE10]
$BASE$00=NLMSNMP,\dbserverpipesql10query
$BASE$01=NLWNSCK,dbserver,5000
master=$BASE$00;$BASE$01
$BASE$02=NLMSNMP,\dbserverpipesql10query
$BASE$03=NLWNSCK,dbserver,5000
query=$BASE$02;$BASE$03

[SYBASE10_BS]
$BASE$00=NLMSNMP,\dbserverpipesql10ackup
$BASE$01=NLWNSCK,dbserver,5001
query=$BASE$00;$BASE$01;
$BASE$02=NLMSNMP,\dbserverpipesql10ackup
$BASE$03=NLWNSCK,dbserver,5001
master=$BASE$02;$BASE$03;

[SYBASE10_MS]
$BASE$00=NLMSNMP,\dbserverpipesql10monitor
$BASE$01=NLWNSCK,dbserver,5002
master=$BASE$00;$BASE$01;
$BASE$02=NLMSNMP,\dbserverpipesql10monitor
$BASE$03=NLWNSCK,dbserver,5002
query=$BASE$02;$BASE$03;
----从以上sql.ini文件内容可以看出:

----①使用TCP/IP软插口的格式为

----NLWNSCK,网络服务器名称,软插口地址

----②使用命名管道的格式为

----NLMSNMP,\网络服务器名称pipe数据库类型数据库服务器简称

----注意:网络服务器名称是指网络服务器本身的计算机名称。如果在互联网络具有多台网络服务器环境中,网络服务器名称应该包含域名,这样就可以访问不同网络中的数据库服务器。在单一网络中可以省略域名,如果单一网络中各个数据库服务器安装在不同的机器上,应注意将网络服务器名称改成相应的计算机名称。

----③软插口地址、数据库类型、数据库服务器简称等参数的变化见下表1

----数据库服务器名称简称数据库类型软插口地址

MSSQL6.0SQLQuerySql1433
SYBASE11SQLQuerySybase5000
SYBASE11_BSBackupSybase5001
SYBASE11_MSMonitorSybase5002
SYBASE11_HSHistSybase5003
SYBASE10SQLQuerySql105000
SYBASE10BSBackupSql105001
SYBASE10_MSMonitorSql105002
----表1.SQL.INI文件中参数变化表

三.连通测试及分析

----连通测试使用SYBPING,连通成功会出现提示:

----①使用命名管道:

connectiontoserver联接通道wassucessful
loadednetlibrarydriver‘NLMSNMPNamedpipesdriver驱动程序名
②使用软插口:
connectiontoserver联接通道wassucessful
loadednetlibrarydriver‘NLWNSCK.DLLdriver驱动程序名
连通不成功时出现提示:
①使用命名管道:
connectiontoserver联接通道wasfailed
loadednetlibrarydriver‘NLMSNMPNamedpipesdriver驱动程序名
②使用软插口
connectiontoserver联接通道wasfailed
loadednetlibrarydriver‘NLWNSCK.DLLdriver驱动程序名
----使用SYPING,选择相应的数据库服务器,提示中可能出现的参数见表2:

数据库服务器名称联接通道驱动程序
MSSQL6.0SQLpipesqlqueryNLMSNMP.DLL
Dbserver,1433NLWNSCK.DLL
SYBASE11SQLpipesybasequeryNLMSNMP.DLL
Dbserver,5000NLWNSCK.DLL
SYBASE11_BSpipesybasebackupNLMSNMP.DLL
Dbserver,5001NLWNSCK.DLL
SYBASE11_MSpipesybasemonitorNLMSNMP.DLL
Dbserver,5002NLWNSCK.DLL
SYBASE11_HSpipesybasehistNLMSNMP.DLL
Dbserver,5003NLWNSCK.DLL
SYBASE10SQLpipesql10queryNLMSNMP.DLL
Dbserver,5000NLWNSCK.DLL
SYBASE10BSpipesql10backupNLMSNMP.DLL
Dbserver,5001NLWNSCK.DLL
SYBASE10_MSpipesql10monitorNLMSNMP.DLL
Dbserver,5002NLWNSCK.DLL
----表2.提示中可能出现的联接通道和驱动程序一览表

----注意:驱动程序名应该是包含有路径的全名。表格2中省略了路径“c:sybasedll”。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus