首页 > 数据库 >使用ODBC连接Sybase ASE数据库

使用ODBC连接Sybase ASE数据库

时间:2024-08-23 17:15:56浏览次数:14  
标签:sybase ODBC etc Driver Sybase ASE localhost

使用ODBC连接Sybase ASE数据库

1. 本地连接

1.1 下载驱动管理器

1.1.1 下载驱动管理器

yum install unixODBC.x86_64 -y

下载相关的包,解决pyodbc无法使用的问题:

https://github.com/mkleehammer/pyodbc/wiki/Install#installing-on-linux

sudo yum install epel-release -y
sudo yum install python3-pip gcc-c++ python3-devel unixODBC-devel -y
pip3 install --user pyodbc
# 如果如要需要信任证书问题直接禁用即可
pip3 install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org pyodbc

1.1.2 查看安装结果

安装好unixODBC驱动管理器后在控制台执行:

(venv) [root@datacheck1 opt]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

查看相关目录的位置

1.2 配置ASE驱动

查看DataAccess/ODBC/samples/readme.txt文件,里面记录了如何配置odbc驱动的步骤。

这里主要记录几个关键点:

64位机ASE驱动位于DataAccess64/ODBC/lib/libsybdrvodb.so处,在修改driver路径时填这个文件的位置。

cd /opt/sybase/DataAccess/ODBC/samples
cat drivertemplate.txt 
[Adaptive Server Enterprise]
Description = Sybase ODBC Driver
Driver = /opt/sybase/DataAccess64/ODBC/lib/libsybdrvodb.so
FileUsage = -1

修改完配置文件后执行以下命令

odbcinst -i -d -f drivertemplate.txt

这样ASE驱动就会成功启动,可以在/etc/odbcinst.ini文件里查看

1.3 配置ASE数据源

cd /opt/sybase/DataAccess/ODBC/samples
cat sampletemplate.txt 
[sampledsn]
Description	= SAP ODBC Data Source
UserID		= sa
Password	= 123456
Driver		= Adaptive Server Enterprise
Server	 	= sybase
Port		= 5000
Database	= master
UseCursor	= 1

修改完配置文件后执行以下命令

odbcinst -i -s -f sampletemplate.txt

数据源会加载到/root/.odbc.ini文件处

1.4 执行连接脚本

[sybase@localhost ~]$ cat test.py 
import pyodbc

conn = pyodbc.connect(
    'DRIVER={Adaptive Server Enterprise};SERVER=sybase;PORT=5000;DATABASE=master;UID=sa;PWD=123456')
print("suceessful")
cursor = conn.cursor()
cursor.execute()
cursor.close()
conn.close()

注意这里的配置:

/etc/host文件中:

[sybase@localhost sybase]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.162 pg
192.168.198.163 oracle
192.168.198.170 sybase

interfaces文件中:

cd /opt/sybase
[sybase@localhost sybase]$ cat interfaces

sybase
	master tcp ether 192.168.198.170 5000
	query tcp ether 192.168.198.170 5000


sybase_BS
	master tcp ether localhost 5001
	query tcp ether localhost 5001


SYBASE_XP
	master tcp ether localhost 5002
	query tcp ether localhost 5002


sybase_JSAGENT
	master tcp ether localhost 4900
	query tcp ether localhost 4900

2. 远程连接

这里提供两种思路:

  1. 下载unixODBC只有再下载ASE的Driver,在根据本地连接一样,配置/etc/odbcinst.ini文件即可。
  2. 直接下载带有ASE的Driver的ODBC的rpm包,安装之后再配置/etc/odbcinst.ini文件即可。

两种方式大差不差,如果不知道如何下载ASE的drive的可以采用第二种,比较方便快捷。

ODBC下载地址

ODBC Driver for ASE

2.1 下载rpm包

上面已经给出地址,下载后上传到服务器。

(venv-datacheck-2.5.0) [root@localhost soft]# ll
-rw-r--r--. 1 root root   2893948 8月  20 04:59 devart-odbc-ase.x86_64.rpm

2.2 安装rpm包

yum install devart-odbc-ase.x86_64.rpm -y

2.3 查看安装结果

安装好unixODBC驱动管理器后在控制台执行:

(venv-datacheck-2.5.0) [root@localhost soft]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

查看相关目录的位置

2.4 编辑配置文件

查看/etc/odbcinst.ini/etc/odbc.ini文件,里面都已经有了模版。按照之前Sbase ASE提供的模版配置即可。

odbc.ini文件:

[sybase]
Description=Sybase ASE Data Source
Driver=Adaptive Server Enterprise
Server=192.168.198.170
Port=5000
UserID=sa
Password=123456
Database=master
UseCursor=1

[ODBC Data Sources]
DEVART_ASE=Devart ODBC Driver for ASE

[DEVART_ASE]
Driver=Devart ODBC Driver for ASE
Data Source=
Port=5000
Database=
User ID=
Password=

odbcinst.ini文件:

[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1
=# Driver from the mysql-connector-odbc package
=# Setup from the unixODBC package

[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1

[Adaptive Server Enterprise]
Description=Sybase ODBC Driver
Driver=/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so
FileUsage=-1
UsageCount=1

[ODBC Drivers]
Devart ODBC Driver for ASE=installed

[Devart ODBC Driver for ASE]
Driver=/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so

这里的/usr/local/devart/odbcase/libdevartodbcase.3.4.1.so即为ASE的driver位置。

2.5 执行测试脚本

(venv-datacheck-2.5.0) [root@localhost soft]# cat test.py 
import pyodbc

#  参考http://bbs.csdn.net/topics/380063945。
conn = pyodbc.connect(
    'DRIVER={Adaptive Server Enterprise};SERVER=192.168.198.170;PORT=5000;DATABASE=master;UID=sa;PWD=123456')
print("连接成功")
cursor = conn.cursor()
cursor.execute()
cursor.close()

3. 问题解答

3.1 将Sybase的driver拷贝

尝试将sybase本地连接上的driver拷贝过来,但是会一直报一个依赖找不到的错误,建议自行下载一下Driver而不是拷贝过来。

3.2 远程连接一直被拒绝

建议将主机地址和名称加入到/etc/hosts文件中,并且请注意interfaces文件中的数据库实例,在这个实例中可能使用localhost,建议改成主机地址如192.168.198.170或者主机名称sybase,但是在hosts文件中必须有对应的ip解析,不然也是被拒绝。下面是修改interfaces文件中的示例:

sybase
	master tcp ether 192.168.198.170 5000
	query tcp ether 192.168.198.170 5000
	
sybase
	master tcp ether sybase 5000
	query tcp ether sybase 5000

/etc/hosts文件添加:

192.168.198.162 pg
192.168.198.163 oracle
192.168.198.170 sybase

3.3 测试

这里使用的是python脚本,因此需要python3.7以上的环境和pyodbc库,如果使用别的测试也可以不用下载,如可以使用图形化连接工具datagrip测试。

标签:sybase,ODBC,etc,Driver,Sybase,ASE,localhost
From: https://www.cnblogs.com/zreo2home/p/18376615

相关文章

  • MBR40200PT-ASEMI无人机专用MBR40200PT
    编辑:llMBR40200PT-ASEMI无人机专用MBR40200PT型号:MBR40200PT品牌:ASEMI封装:TO-247批号:最新最大平均正向电流(IF):40A最大循环峰值反向电压(VRRM):200V最大正向电压(VF):0.70V~0..90V工作温度:-65°C~175°C反向恢复时间:35ns芯片个数:2芯片尺寸:74mil引脚数量:3正向浪涌电流(IFMS):350......
  • MBR30200FCT-ASEMI智能AI专用MBR30200FCT
    编辑:llMBR30200FCT-ASEMI智能AI专用MBR30200FCT型号:MBR30200FCT品牌:ASEMI封装:ITO-220AB批号:最新恢复时间:35ns最大平均正向电流(IF):30A最大循环峰值反向电压(VRRM):200V最大正向电压(VF):0.70V~0.90V工作温度:-65°C~175°C芯片个数:2芯片尺寸:mil正向浪涌电流(IFMS):275AMBR30200F......
  • OceanBase-clog、日志-队列积压-dump tenant info
    dumptenantinfo日志中搜索dumptenantinfo关键字,可看到租户的规格,线程,队列,请求统计等信息。这条日志每个租户每10s打印一次。查询办法:  grep'dumptenantinfo.*observer.log日志:tenant={id:1002'log/observer.log.*[2021-05-1016:56:22.564978]INFO [SERVER.OMT]......
  • OceanBase -clog、日志-查看unit迁移过程中副本数变化
    查看unit迁移过程中副本数变化----------------------------------------------------------------------------------------------------------------------------第一:在副本迁移时候,可以查询以下SQL进行观察(适用2.X/3.X)查看副本数selectcount(*)from__all_virtual_m......
  • OceanBase -内存-内存泄漏
     内存泄漏是指OB的某个租户内的某个内存模块占用内存过大,排查内存泄漏问题需要明确如下2个思路: 1,到底有没有发生泄漏:如果某个租户的某个内存模块的内存占用非常大,但是没有任何人干预的情况下,这个内存模块的内存自行降低,这是泄漏吗?一般我们不认为这是泄漏,某个内存模块使用的内......
  • OceanBase 日常运维-问题分类
    ---- 2.x/3.x常见问题排查思路----2024年8月23日10:15:26第一、全链路诊断:  CPU问题:内存问题(-4030、-4013):内存泄漏:CORE问题:链接类问题(异常断链、连接不上等):SQL执行相关(失败、慢等):备份恢复问题:长事务与悬挂事务:切主问题(有主改选、无主选举):CLOG盘满:UNIT迁移和缩容:合并:......
  • 【论文解读】Macroblock Level Rate Control for Low Delay H.264/AVC based Video Co
    级别:IEEE时间:2015作者:MinGao等机构:哈尔滨工业大学下载:MacroblockLevelRateControlforLowDelayH.264/AVCbasedVideoCommunication摘要算法目的:提出了一种针对低延迟H.264/AVC视频通信的宏块(MB)级别速率控制算法。算法基础:基于ρ域速率模型,该模型涉......
  • 05-03 Map Persistent Objects to Database Views(将持久对象映射到数据库视图 )
    MapPersistentObjectstoDatabaseViews(将持久对象映射到数据库视图)CreateaPersistentClass(创建持久类)Createapersistentclass.Theclassnameshouldmatchtheviewname.创建一个持久类。类名应与视图名匹配。AssignthePersistentattributetotheper......
  • JavaSE基础知识分享(十三)
    写在前面今天继续讲Java中的网络编程的知识!网络编程概述计算机网络计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。例如:极域。网络......
  • GBase 8s数据库随系统启动、自重启配置
    近期的客户想实现数据库自重启功能(即故障后自动重启),该功能需要在自动启动的基础上进行改进。关于systemd方式实现自启动的方法可参考之前的文档:https://gbasedbt.com/index.php/archives/161/以下仍是通过systemd方式实现GBase8s数据库的自启动、自重启与关闭。注意:自启......