转自:http://industry.ccidnet.com/art/322/20030529/47823_1.html
在一个小型网站开发中,笔者和同事需要共享一个Access 2000数据库。对于使用Windows 2000专业版的同事来说,自然没有什么问题,但是由于笔者使用的是Linux系统,如何连接同事机器上的Access数据库就成了一个问题。以前在Windows下面对这种情况,都是通过ODBC来实现的。ODBC可在很大程度上降低不同系统和数据连接时的复杂度。于是笔者循着ODBC这条路终于找到了解决的办法。
所需软件
解决方案使用的是Easysoft(www.Easysoft.com)公司的ODBC-ODBC Bridge(http://www.Easysoft.com/products/2002/main.phtml)。该软件有30天的免费试用期,其实现不同系统之间数据库互联的结构原理在此不详述。遵照页面提示,只需进行简单的注册即可下载该软件。因为ODBC-ODBC Bridge功能强大,可用于很多不同的平台和数据库,所以下载时一定要选择与自己平台对应的软件包。此外,虽然下载页面中给出了客户端应用程序选项,不过并不需要进行选择。由于本例使用的Access数据库位于Windows机器上,所以选择的服务器端是Windows平台,而客户端则是Linux平台。
软件安装设置
要想让Linux及其它客户端能够访问Windows服务器上的数据库,首先要在Windows下配置数据源。鉴于读者对这一步应该非常熟悉,因此不再予以说明。下面分别在服务器和客户端进行Easysoft的安装和设置。
在Windows下运行EasysoftODBC-ODBCBridge1_1_0_0。按照提示,一直点击下一步即可。直到第九步,即“OOB Server Administrator”页面时,要求填写用户名,注意该用户名必须与Windows 2000登录时使用的用户名一致(如administrator等)。然后一直选择默认设置,这时会产生一个Easysoft ODBC-ODBC Bridge的设置界面。对于这些设置不需进行更改,只要把用户名和密码换成Windows下的账号即可。
下面的设置比较关键,该软件要求在使用前从Easysoft公司处申请一个许可。按照提示填写相关内容,点击“Request License”。接下来,如果机器处于联机状态,可以点击“On-Line Request”。如果不成功,可以选择“E-mail Request”,通过电子邮件申请,收到许可后再导入即可。我们可以看到许可申请成功后的界面。点击“Finish”,服务器端的安装工作完成。
安装Linux下的客户端软件时,首先切换至下载软件包所在目录,运行如下命令:
$ tar -zxvf odbc-odbc-bridge-1.1.0.0.linux-glibc.tar |
执行该命令后,会在当前目录下生成一个名为odbc-odbc-bridge-1.1.0.0.linux-glibc的目录。切换至该目录,运行./install命令开始安装。安装过程中系统会提示很多问题,前面几步只需接受默认选项,按回车即可。到最后提问是否安装Easysoft ODBC-ODBC Bridge Server时,选择“n”,安装完成。
要让客户端能够正常运行,根据具体情况需要对/etc/odbc.ini文件进行编辑。下面是笔者的ODBC文件的具体内容:
[test] Driver = OOB SERVER = 210.31.8.56 PORT = 8888 TRANSPORT = tcpip TARGETDSN = test LOGONUSER = yiligui LOGONAUTH = 12345 TargetUser = demo TargetAuth = Easysoft |
其中相关内容说明如下:
◆ [test]是本地数据源的名字;
◆ SERVERNAME是Windows计算机的名字或IP地址;
◆ TargetDSN是想要连接的Windows系统上的ODBC数据源;
◆ LOGONUSER和LOGONAUTH分别是Windows下的用户名和密码;
其它的选项按默认设置即可。
系统测试
安装完成后,进入测试步骤。首先测试服务器上安装,选择开始→程序→Easysoft→ODBC-ODBC Bridge→OOB Web Administrator,如果一切正常WEB Administrator界面会出现。
在Linux客户端对系统进行测试时,首先切换至/usr/local/Easysoft/unixODBC/bin目录,运行测试命令,代码如下:
# cd /usr/local/Easysoft/unixODBC/bin # ./isql -v test yiligui 12345 |
如果一切正常,会显示如下信息:
+-----------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +-----------------------------+ SQL> |
然后输入SQL命令来对数据库进行操作。首先来查看一下project表中部分字段的内容:
SQL> select id,project_name from project +------------+-----------------------------+ | id | project_name | +------------+-----------------------------+ | 1 | 当代侗族的社会变迁 | | 2 | 汉藏文化交流研究 | | 3 | 北京市牛街社区研究 | | 4 |蒙古族宗教文化交流研究 | | 5 | 藏文新闻学原理 | ...... | 74 |彝族地区旅游开发研究 | +------------+---------------------------+ 74 rows returned SQL> |
可以看到,上面显示一切正常,在用户表auth中插入一条记录:
SQL> insert into auth values ('1','yiligui','12345') 1 rows affected 再用select语句来查看该表: SQL> select id,user,password from auth +------------+-----------+--------+ | id | user | password | +------------+-----------+--------+ | 1 | yiligui | 12345 | +------------+-----------+--------+ 1 rows returned |
由上面可以看出,该记录已经插入至数据库中。下面再把该记录删除:
SQL> delete from auth where user='yiligui' 1 rows affected SQL> select id,user,password from auth +------------+-----------+--------+ | id | user | password | +------------+-----------+--------+ +------------+-----------+--------+ |
通过使用Insert、Delete、Select等标准语句进行测试,结果显示正常。整个系统已经设置完成,可以轻松地对服务器上的数据库进行操作。
几个问题
该例在安装和配置过程中,遇到了几个小问题。在服务器端安装软件过程中,由于笔者上国外网站需要使用代理,致使在线申请无法完成(这是一个亟待改善的问题)。这时可以先继续安装,等安装完成后再通过邮件申请许可,然后再导入即可。导入方法是:选择开始→程序→Easysoft→Easysoft Data Access Licensing→Licence Manager,打开相应界面后按提示进行操作。
此外,在笔者的测试过程中,在Linux系统中进行数据库连接时提示以下错误:
# ./isql -v test yiligui 12345 [unixODBC][][Easysoft ODBC (Server)]General error: No license slots available [ISQL]ERROR: Could not SQLConnect |
该错误表明服务器端的软件并没有申请许可。因为许可导入后要重新启动服务才有效,所以对于通过邮件来申请许可的人特别容易碰到这个问题。解决方法很简单,只需选择开始→程序→Easysoft→ODBC-ODBC Bridge→Services,在“服务”管理程序中找到Easysoft ODBC-ODBC Bridge Server,然后重新启动该服务即可。
结束语
本文只简单介绍了Easysoft ODBC-ODBC Bridge可以实现的一个最基本的功能。事实上它的功能远不止这些,不仅可以在各版本的Windows平台上使用,更重要的是可以让非Windows平台的操作系统也可以使用ODBC的数据库连接,让数据库管理者可以在Unix、Linux、OpenVMS及Windows下使用ODBC的功能。本例中使用的是Windows服务器/Linux客户端模式,实际中根据需要各操作系统平台都可以作为服务器和客户端。此外,该软件支持的数据库也比较广泛。
第三方程序设计语言、工具和应用程序也可以轻松实现与ODBC-ODBC Bridge的整合。在其提供的帮助文档中,介绍了与C语言、Apache/PHP、Perl、StarOffice等整合的方法。具体内容可查看http://www.Easysoft.com/products/2002/man/index.html。
既然要在工作中使用它,技术支持就显得尤为重要。从网站上得知试用版本的ODBC-ODBC Bridge有30天的免费技术支持时间,为了验证其响应时间,笔者就一些相关问题通过电子邮件([email protected])发出了询问,结果很快得到了答复,并且回答得非常仔细。此外,Easysoft.com提供的无论是在线的还是可供下载的文档都非常规范、完尚,基本上涉及到了用户使用过程中可能遇到的所有问题。
总之,在不同平台之间(尤其是非Windows平台)进行共享数据库的连接和开发时,使用ODDBC-ODDBC Bridge可以大大减轻用户和开发人员的工作量。有类似需求的读者不妨一试。