同时访问SQL SERVER和SYBASE数据库
---- 在 工 作 实 践 中, 笔 者 发 现 只 要 对SYBASE11 客 户 端 进 行 适 当 的 配 置, 在WISQLl32 的 菜 单 中 断 开 一 个 已 连 通 的 数 据 库 服 务 器 后, 连 接 网 络 中 另 一 个 的 数 据 库 服 务 器, 不 用 重 新 启 动, 就 可 以 达 到 既 访 问 微 软 的SQL SERVER6.0 数 据 库 也 能 同 时 访 问SYBASE11( 或 者10) 数 据 库 的 目 的。 既 给 同 时 管 理 多 个 数 据 库 服 务 器( 尤 其 是SQL SERVER6.0 数 据 库) 带 来 了 很 大 的 方 便, 也 使 得 在SQL SERVER6.0 和SYBASE11 之 间 移 植 存 储 过 程、 触 发 器 提 供 了 可 能 性。 本 文 就 笔 者 自 己 的 实 现 方 法 提 供 给 大 家 参 考。
一 . 系 统 环 境
---- 为 了 简 化 起 见, 假 设 只 在 一 个 网 络 环 境 中, 只 有 一 台 网 络 服 务 器, 在 这 台 网 络 服 务 器 上 同 时 安 装 了MS SQL SERVER6.0、SYBASE11( 或 者SYBASE10, 建 议 不 要 同 时 安 装SYBASE11 和10 两 个 版 本)。 不 考 虑 单 一 网 络 多 台 服 务 器 或 互 联 网 络 多 台 网 络 服 务 器 环 境。 但 是 无 论 什 么 环 境, 应 用 同 样 的 方 法 都 可 以 实 现WISQLl32 对 分 布 在 一 台 或 多 台 网 络 服 务 器 上 数 据 库 服 务 器 的 访 问。
---- 1. 网 络 服 务 器:WINDOWS NT 3.51 或4.0 网 络 操 作 系 统, 内 存64MB 以 上, 奔 腾133 以 上, 网 络 协 议 为TCP/IP, 主 域 控 制 器 名RMYH, 网 络 服 务 器 的 计 算 机 名DBSERVER。
---- 2. 在DBSERVER 网 络 服 务 器 上 同 时 安 装 的MS SQL SERVER6.0 数 据 库 服 务 器 名 为DBSERVER( 与 网 络 服 务 器 同 名),SYBASE 11 数 据 库 服 务 器 包 含SYBASE11(SQL 服 务 器)、SYBASE11-BS(BACKUP 服 务 器)、SYBASE11-MS(MONITOR 服 务 器)、SYBASE11-HS(HISTORY 服 务 器) 四 个 数 据 库 服 务 器(SYBASE 10 数 据 库 服 务 器 只 包 含SYABSE10,SYBASE10-BS、SYBASE10-MS 三 个 数 据 库 服 务 器)。
---- 3. 客 户 机: 中 文WINDOWS95,SYABSE FOR WINDOWS95 客 户 端 工 具
二 . 配 置SYABSE FOR WINDOWS95 客 户 端 工 具
---- SQLEDIT 是SYBASE 与 平 台 无 关 的 程 序, 用 来 配 置 客 户 连 接,SQLEDIT 用 于 编 辑SYBASE 根 目 录 下INI 子 目 录 中 名 为SQL.INI 的 文 件, 也 可 以 人 工 地 编 辑SQL.INI 文 件, 但 是 借 助SQLEDIT 的 图 形 工 具 要 容 易 一 些, 并 且 可 以 把 错 误 推 给SYBASE。SQLEDIT 的 使 用 方 法 请 参 考 有 关SYBASE 的 说 明 书。 本 文 主 要 讨 论 在SQL.INI 如 何 选 择 参 数 来 使WISQL 同 时 访 问MS SQL SERVER 和SYBASE11 数 据 库 服 务 器。
---- WINDOWS NT 可 以 选 择NetBEUI、IPX/SPX、TCP/IP 三 种 网 络 协 议 来 组 建 网 络,SYBASE11( 或 者SYBASE10) 数 据 库 服 务 器 安 装 时, 会 根 据 网 络 协 议 来 生 成NET-LIBRARY 驱 动 程 序, 三 种 网 络 协 议 都 能 生 成 名 为NLMSNMP( 命 名 管 道) 的NET-LIBRARY 驱 动 程 序, 其 中 对 于TCP/IP 网 络 协 议, 还 多 生 成 一 个 名 为NLWNSCK( 软 插 口) 的NET-LIBRARY 驱 动 程 序, 所 以 笔 者 选 择 使 用TCP/IP 构 成 的WINDOWS NT 网 络 作 为 分 析 的 环 境。
---- 使 用SQLEDIT 或 编 辑 软 件 配 置 好 的SQL.INI 文 件 内 容 如 下(SQL.INI 文 件 在c:sybaseini 目 录 中):
[MSSQL6.0]
$BASE$00=NLMSNMP,\ dbserver pipesql query
$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,\dbserverpipesybase backup
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,\dbserverpipesybase hist
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,\dbserverpipesql10 monitor
$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.0 SQL Query Sql 1433
SYBASE11 SQL Query Sybase 5000
SYBASE11_ BS Backup Sybase 5001
SYBASE11_MS Monitor Sybase 5002
SYBASE11_HS Hist Sybase 5003
SYBASE10 SQL Query Sql10 5000
SYBASE10 BS Backup Sql10 5001
SYBASE10_MS Monitor Sql10 5002
---- 表1.SQL.INI 文 件 中 参 数 变 化 表
三 . 连 通 测 试 及 分 析
---- 连 通 测 试 使 用SYBPING, 连 通 成 功 会 出 现 提 示:
---- ① 使 用 命 名 管 道:
connection to server联接通道 was sucessful
loaded netlibrary driver‘NLMSNMP Named pipes driver驱动程序名
②使用软插口:
connection to server联接通道 was sucessful
loaded netlibrary driver‘NLWNSCK.DLL driver驱动程序名
连通不成功时出现提示:
①使用命名管道:
connection to server联接通道 was failed
loaded netlibrary driver‘NLMSNMP Named pipes driver驱动程序名
②使用软插口
connection to server联接通道 was failed
loaded netlibrary driver‘NLWNSCK.DLL driver驱动程序名
---- 使 用SYPING, 选 择 相 应 的 数 据 库 服 务 器, 提 示 中 可 能 出 现 的 参 数 见 表2:
数据库服务器名称 联接通道驱动程序
MSSQL6.0 SQL pipesqlquery NLMSNMP.DLL
Dbserver,1433 NLWNSCK.DLL
SYBASE11 SQL pipesybase query NLMSNMP.DLL
Dbserver,5000 NLWNSCK.DLL
SYBASE11_ BS pipesybase backup NLMSNMP.DLL
Dbserver,5001 NLWNSCK.DLL
SYBASE11_MS pipesybase monitor NLMSNMP.DLL
Dbserver,5002 NLWNSCK.DLL
SYBASE11_HS pipesybase hist NLMSNMP.DLL
Dbserver,5003 NLWNSCK.DLL
SYBASE10 SQL pipesql10query NLMSNMP.DLL
Dbserver,5000 NLWNSCK.DLL
SYBASE10 BS pipesql10 backup NLMSNMP.DLL
Dbserver,5001 NLWNSCK.DLL
SYBASE10_MS pipesql10 monitor NLMSNMP.DLL
Dbserver,5002 NLWNSCK.DLL
---- 表2. 提 示 中 可 能 出 现 的 联 接 通 道 和 驱 动 程 序 一 览 表
---- 注 意: 驱 动 程 序 名 应 该 是 包 含 有 路 径 的 全 名。 表 格2 中 省 略 了 路 径“c:sybasedll”。