达梦DM-达梦数据库DM到SOL SERVER的DBLINK创建

news/2024/12/29 13:49:35/

本次搭建的DBLINK为Linux端达梦数据库访问Win端的SQL SERVER数据库,通过配置ODBC连接SQL SERVER数据库,DM创建ODBC的DBLINK连接,来实现DM和SQL SERVER的DBLINK,以下为具体的操作步骤。

  • DBLINK概述

DBLINK(Database LINK)顾名思义就是数据库的链接没就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据表中的数据时,本地数据库就必须要创建远程数据库的DBLINK没通过DBLINK,本地数据库可以像访问自己本身存储的表的数据一样,访问远程数据库表中的数据。

  • DM数据库环境概述

操作系统:Centos 7.4.1708

数据库版本: 8.1-2-2-21

数据库模式:单实例

IP地址:192.168.6.63

  • SQLServer环境概述

操作系统:Windows 10企业版

数据库版本:10.50.1600

IP地址:192.168.6.41

  • DBLINK所使用的安装包概述

unixODBC-2.3.0.tar.gz

freetds-1.2.21.tar.gz

备注:DM数据库和SQLserver数据库已安装完毕,Dblink所需的相关安装包已上传至DM数据库所在主机完成。

1,解压和编译ODBC和Freetds

解压安装包,解压命令如下,解压过程省略

[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

2,测试连接

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 -C
Compile-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 master
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Setting master as default database in login packet
1>

3,编写配置文件

3.1,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 123456789
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>

3.2,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.so
Description = My Second Test DSN
Trace = No
Server = 192.168.6.41
Database = master
Port = 1433
TDS_Version = 7.3

4,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>

5,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');

数据库查询内容如下:

在这里插入图片描述

6,DM数据库创建DBLINK

连接数据库,通过ODBC方式,创建DBLINK数据库

[dmdba@centos7 bin]$ ./disql SYSDBA/DM01SYSDBA:5236服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.808(ms)
disql V8
SQL> create link "SYSDBA"."TEST" connect 'ODBC' with "sa" identified by "123456789" using 'TEST2dsn';
操作已执行
已用时间: 52.437(毫秒). 执行号:300.
SQL>
7,拷贝驱动

将驱动拷贝至达梦的bin目录

[dmdba@centos7 bin]$ cp -r /usr/local/lib/*  /dm8/dmdbms/bin

8,查询测试

连接数据库,DM数据库通过ODBC的DBLINK查询SQL SERVER的AUTHORS表内容

[dmdba@centos7 bin]$ ./disql SYSDBA/DM01SYSDBA:5236服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 0.954(ms)
disql V8
SQL> 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   10468
2   A02   Wendy   Heydemark  303-986-7020  2922 Baseline Rd    Boulder     CO   80303
3   A03   Hallie   Hull     415-549-4278  3800 Waldo Ave, #14F  San Francisco   CA   94123
4   A04   Klee    Hull     415-549-4278  3800 Waldo Ave, #14F  San Francisco   CA   94123
5   A05   Christian Kells    212-771-4680  114 Horatio St     New York     NY   10014
6   A06             Kellsey   650-836-7128  390 Serra Mall     Palo Alto    CA   94305
7   A07   Paddy   O'Furniture 941-925-0752  1442 Main St      Sarasota     FL   342367 rows got已用时间: 181.113(毫秒). 执行号:300.
SQL>

查询成功,至此达梦数据库访问SQL SERVER数据库的DBLINK创建成功。

9,问题解决

创建完成DBLINk后,通过DBLINK查询操作报错,加载库文件失败。

[dmdba@centos7 bin]$ ./disql SYSDBA/DM01SYSDBA:5236服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 0.979(ms)
disql V8
SQL> select * from AUTHORS@TEST;
select * from AUTHORS@TEST;
第1 行附近出现错误[-2245]:DBLINK加载库文件失败.
已用时间: 1.739(毫秒). 执行号:0.
SQL>

解决方式为,将ODBC驱动程序的lib目录下的驱动拷贝到达梦的bin目录下,无需重启数据库实例,拷贝完成后可进行正常查询。

更多请访问达梦云适配中心:达梦云适配中心


http://www.ppmy.cn/news/214748.html

相关文章

Vulnhub靶场之HackathonCTF-1

Vulnhub靶场之HackathonCTF-1 靶场下载地址:http://www.vulnhub.com/entry/hackathonctf-1,591/ 本机kali地址:192.168.157.144 信息收集 第一步都是nmap扫描 nmap -sP 192.168.157.144/24真实机是.2,目标主机是.157 接下来扫描端口和详细…

【Android 内存优化】dumpsys meminfo PID 查看单进程内存信息详解

1.内存指标 Item全称含义等价USSUnique Set Size物理内存进程独占的内存PSSProportional Set Size物理内存Pss Uss按比例包含共享库RSSResient Set Size物理内存RSSUSS包含共享库VSSVirtual Set Size虚拟内存VSS RSS未分配实际物理内存 内存的大小关系:VSS>RS…

2+22+222+2222+。。。。

题目描述 求Snaaaaaa…aa…aaa(有n个a)之值,其中a是一个数字,为2。 例如,n5时222222222222222,n由键盘输入。输入 n输出 Sn的值样例输入 5 样例输出 24690 #include"stdio.h" int cal(int *p) { …

进程篇:循环创建N个子进程

进程篇:循环创建N个子进程 标签:fork();N个子进程 从前面的进程篇——fork()可以了解到fork函数会创建父进程和子进程,并且他们在执行的时候,怎么来控制说是先创建父进程,还是先创建子进程呢&…

日期格式的伟大革新--关于日期格式的压缩算法--减少月份占两位格的表示法

日期格式的伟大革新--关于日期格式的压缩算法--减少月份占两位格的表示法 原创:李均宇 2023-01-09于吴川梅菉 2123-09 众所周知,日期格式通用表示法是,四位年份,两位月份,两位日期 忽发奇想,这可不可以…

靶机渗透练习85-HackathonCTF 1

靶机描述 靶机地址:https://www.vulnhub.com/entry/hackathonctf-1,591/ Description N/A 一、搭建靶机环境 攻击机Kali: IP地址:192.168.9.3 靶机: IP地址:192.168.9.2 注:靶机与Kali的IP地址只需要在同…

vulnhub Hackathon2渗透笔记

靶机下载地址:https://www.vulnhub.com/entry/hackathonctf-2,714/ kali ip地址:192.168.20.130 信息收集 扫描靶机ip地址 nmap -sP 192.168.20.0/24确定靶机ip 进行端口扫描 nmap -A -p 1-65535 192.168.20.134首先我们使用匿名用户登录ftp看看有…

京东产发奔赴港股上市,分拆上市或成互联网大厂的共同选择?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 3月30日晚间,京东集团(9618.HK)相继发布2则公告称,拟分拆京东智能产发股份有限公司(以下简称“京东产发”)、京东工业股份有限公司(以下简称…