
-----正文-----

本文介绍如何搭建达梦数据库到SQL Server的DBLINK。本次搭建的DBLINK为Linux端达梦数据库访问Win端的SQL Server数据库,通过配置ODBC连接SQL Server数据库,DM创建ODBC的DBLINK连接,来实现DM和SQL Server的DBLINK。以下为具体的操作步骤。
DBLINK(Database LINK)顾名思义就是数据库的链接,就像电话线一样,是一个通道。当我们要跨本地数据库,访问另外一个数据表中的数据时,本地数据库就必须要创建远程数据库的DBLINK。通过DBLINK,本地数据库可以像访问自己本身存储的表的数据一样,访问远程数据库表中的数据。
本章内容已在如下环境上测试:
①DM数据库环境概述:
操作系统:Centos 7.4.1708
数据库版本: 8.1-2-2-21
数据库模式:单实例
IP地址:192.168.6.63
②SQL Server环境概述:
操作系统:Windows 10企业版
数据库版本:10.50.1600
IP地址:192.168.6.41
③DBLINK所使用的安装包概述:
unixODBC-2.3.0.tar.gz
freetds-1.2.21.tar.gz
备注:DM数据库和SQL Server数据库已安装完毕,Dblink所需的相关安装包已上传至DM数据库所在主机完成。
①解压安装包,解压命令如下,解压过程省略
[root@centos7 tmp]# cd tmp[root@centos7 tmp]# tar -zxvf unixODBC-2.3.0.tar.gz[root@centos7 tmp]# tar -zxvf freetds-1.2.21.tar.gz
②编译解压的安装包,编译命令如下,编译过程省略
[root@centos7 tmp]# cd unixODBC-2.3.0/[root@centos7 unixODBC-2.3.0]# ./configure[root@centos7 unixODBC-2.3.0]# make && make install[root@centos7 unixODBC-2.3.0]# cd ..[root@centos7 tmp]# cd freetds-1.2.21/[root@centos7 freetds-1.2.21]# ./configure[root@centos7 freetds-1.2.21]# make && make install
✦ 二、测试连接 ✦
Win10防火墙已关闭,两主机之间网络端口开放,数据库SQL Server已启动,如图:

DM数据库所在Linux主机进行测试连接;
①查看安装版本具体信息:
/usr/local/bin/tsql -C
②连接数据库:
/usr/local/bin/tsql -H 192.168.6.41 -p 1433 -U sa -P 123456789 -D master
-H:IP地址
-p:数据库端口
-U:用户名
-P:密码
-D:系统数据库名
-S:在freetds.conf中指定要连接的服务器条目
③查看版本信息:
[root@centos7 ~]# usr/local/bin/tsql -CCompile-time settings (established with the "configure" script)Version: freetds v1.2.21freetds.conf directory: usr/local/etcMS db-lib source compatibility: noSybase binary compatibility: noThread safety: yesiconv library: yesTDS version: autoiODBC: nounixodbc: yesSSPI "trusted" logins: noKerberos: noOpenSSL: noGnuTLS: noMARS: yes
④ 测试连接,配置正确信息,测试连接成功如下显示:
[root@centos7 ~]# usr/local/bin/tsql -H 192.168.6.41 -p 1433 -U sa -P 123456789 -D masterlocale is "zh_CN.UTF-8"locale charset is "UTF-8"using default charset "UTF-8"Setting master as default database in login packet
✦ 三、编写配置文件 ✦
①Freetds驱动编写
freetds.conf内容如下:
[root@centos7 ~]# vi usr/local/etc/freetds.conf[mssqlserver]host = 192.168.6.41port = 1433tds version = 7.3client charset = UTF-8
测试通过服务器条目进行连接,测试连接成功:
[root@centos7 ~]# usr/local/bin/tsql -S mssqlserver -U sa -P 123456789locale is "zh_CN.UTF-8"locale charset is "UTF-8"using default charset "UTF-8"1>
②ODBC驱动编写
odbcinst.ini内容如下:
[root@centos7 ~]# vi usr/local/etc/odbcinst.ini[FreeTDS] # unixodbc驱动名称Description=ODBC of FreeTDS for MS SQL 2008 # 简介Driver=/usr/local/lib/libtdsodbc.so # 驱动所在位置
odbc.ini内容如下:
[root@centos7 ~]# vi usr/local/etc/odbc.ini[ODBC Data Sources]TEST2dsn= My First Test DSN[TEST2dsn]Driver = /usr/local/lib/libtdsodbc.soDescription = My Second Test DSNTrace = NoServer = 192.168.6.41Database = masterPort = 1433TDS_Version = 7.3
✦ 四、ODBC连接SQL Server数据库 ✦
①root用户测试连接,指定连接名,具体的用户名/密码
[root@centos7 ~]# isql -v TEST2dsn sa 123456789+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+SQL>
②dmdba用户测试,指定连接名,具体的用户名/密码;
[dmdba@centos7 ~]$ isql -v TEST2dsn sa 123456789+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+SQL>
✦ 五、SQL Server创建测试表 ✦
①测试表SQL如下:
创建表格,并插入测试数据
CREATE TABLE authors(au_id CHAR(3) NOT NULL,au_fname VARCHAR(15) NOT NULL,au_lname VARCHAR(15) NOT NULL,phone VARCHAR(12) ,address VARCHAR(20) ,city VARCHAR(15) ,state CHAR(2) ,zip CHAR(5) ,CONSTRAINT pk_authors PRIMARY KEY (au_id));INSERT INTO authors VALUES('A01','Sarah','Buchman','718-496-7223','75 West 205 St','Bronx','NY','10468');INSERT INTO authors VALUES('A02','Wendy','Heydemark','303-986-7020','2922 Baseline Rd','Boulder','CO','80303');INSERT INTO authors VALUES('A03','Hallie','Hull','415-549-4278','3800 Waldo Ave, #14F','San Francisco','CA','94123');INSERT INTO authors VALUES('A04','Klee','Hull','415-549-4278','3800 Waldo Ave, #14F','San Francisco','CA','94123');INSERT INTO authors VALUES('A05','Christian','Kells','212-771-4680','114 Horatio St','New York','NY','10014');INSERT INTO authors VALUES('A06','','Kellsey','650-836-7128','390 Serra Mall','Palo Alto','CA','94305');INSERT INTO authors VALUES('A07','Paddy','O''Furniture','941-925-0752','1442 Main St','Sarasota','FL','34236');
②数据库查询内容如下:

✦ 六、达梦数据库创建DBLINK ✦
连接数据库,通过ODBC方式,创建DBLINK数据库。
[dmdba@centos7 bin]$ ./disql SYSDBA/DM01SYSDBA:5236服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间 : 2.808(ms)disql V8SQL> create link "SYSDBA"."TEST" connect 'ODBC' with "sa" identified by "123456789" using 'TEST2dsn';操作已执行已用时间: 52.437(毫秒). 执行号:300.SQL>
✦ 七、拷贝驱动 ✦
将驱动拷贝至达梦的bin目录 :
[dmdba@centos7 bin]$ cp -r /usr/local/lib/* /dm8/dmdbms/bin
✦ 八、查询测试 ✦
连接数据库,DM数据库通过ODBC的DBLINK查询SQL Server的AUTHORS表内容。
[dmdba@centos7 bin]$ ./disql SYSDBA/DM01SYSDBA:5236服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间 : 0.954(ms)disql V8SQL> select * from AUTHORS@TEST;行号 au_id au_fname au_lname phone address city state zip----- ----- --------- ----------- ------------ -------------------- ------------- ----- -----1 A01 Sarah Buchman 18-496-7223 75 West 205 St Bronx NY 104682 A02 Wendy Heydemark 303-986-7020 2922 Baseline Rd Boulder CO 803033 A03 Hallie Hull 415-549-4278 3800 Waldo Ave, #14F San Francisco CA 941234 A04 Klee Hull 415-549-4278 3800 Waldo Ave, #14F San Francisco CA 941235 A05 Christian Kells 212-771-4680 114 Horatio St New York NY 100146 A06 Kellsey 650-836-7128 390 Serra Mall Palo Alto CA 943057 A07 Paddy O'Furniture 941-925-0752 1442 Main St Sarasota FL 342367 rows got已用时间: 181.113(毫秒). 执行号:300.SQL>
查询成功,至此达梦数据库访问SQL Server数据库的DBLINK创建成功。
✦ 九、问题解决 ✦
创建完成DBLINk后,通过DBLINK查询操作报错,加载库文件失败。
[dmdba@centos7 bin]$ ./disql SYSDBA/DM01SYSDBA:5236服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间 : 0.979(ms)disql V8SQL> select * from AUTHORS@TEST;select * from AUTHORS@TEST;第1 行附近出现错误[-2245]:DBLINK加载库文件失败.已用时间: 1.739(毫秒). 执行号:0.SQL>
解决方式为:第7节,将ODBC驱动程序的lib目录下的驱动拷贝到达梦的bin目录下,无需重启数据库实例,拷贝完成后可进行正常查询。
>>> THE END <<<
相关推荐




