SQL Server只能在windows上运行, 在windows可以很轻松编译QODBC连接sqlserver数据库, 如何在linux连接sqlserver数据库. QT文档推荐用unixODBC来编译linux上ODBC驱动.
一. 编译unixODBC
wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.2.tar.gz tar -xzvf unixODBC-2.3.2.tar.gz cd unixODBC-2.3.2 ./configure ./make
二. 编译ODBC插件
2.1 进入QT源码后编译,编译完成后会在当前目录下产生 libqsqlodbc.so
cd $QTDIR/src/plugins/sqldrivers/odbc qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc" make
2.2 如果直接指定unixODBC源码目录("INCLUDEPATH+=/home/scada/unixODBC-2.3.2/include" "LIBS+=-L/home/scada/unixODBC-2.3.2/lib -lodbc")编译插件时,会出现下面的错误:
cannot convert parameter from 'sqlinteger *' to 'sqllen *', unixodbc_conf.h: No such file or directory
所以一定要先安装unixODBC, 才开始编译ODBC驱动
2.3 测试
这下驱动也有了,随便写个代码测试, 发现怎么都不能正常连接, 报错: Can't open lib 'SQL SERVER' : file not found QODBC3: Unable to connect
谷歌发现, 还需要安装FreeTDS,那个才是真正的驱动,unixODBC主要是用来编译插件的
三. 编译安装freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz cd freetds-0.9.1 ./configure --prefix=/usr/local/freetds make install
四. 配置freetds
编译完成后,还得配置freetds相关参数才能运行, 这ODBC插件未免也太鸡肋了吧. 没办法 ,继续接着干 ...
4.1 配置 /usr/local/freetds/etc/freetds.conf
sudo vi /usr/local/freetds/etc/freetds.conf
#A typical Microsoft server
[testdsn] # SQL Server数据源名称,可以任意取有意义的名称
host=192.168.10.22 # 数据库主机
port=1344 #数据库监听端口
4.2 tsql工具测试数据库连接
运行 /usr/local/freetds/bin/tsql,
tsql –S 你的DSN的名称 –U 数据库服务器连接用户名 –P 用户名对应的密码 –D 使用的数据库的名称
数据源名称与配置文件一致: tsql -S testdsn -U sa -P sa -D test
五. 测试ODBC插件
5.1 配置 /usr/local/unixODBC/etc/odbcinst.ini
[FREETDS] Description=freetds driver Driver=/usr/local/freetds/lib/libtdsodbc.so #指定TDS驱动路径 Trace=yes TraceFile=/tmp/odbc.log # 启用ODBC日志记录
5.2 配置 /usr/local/unixODBC/etc/odbc.ini
[testdsn] # 数据源名称 Driver=FREETDS # 指向odbcinst.ini的驱动配置 Description=MSSQL Server Servername=testdsn # 数据源名称 Database=sqlscada #数据库名称
5.3 测试运行
qDebug()<<QSqlDatabase::drivers(); // 建立连接 QSqlDatabase db=QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("testdsn"); db.setPort(3304); db.setUserName("sa"); db.setPassword("sa"); if(!db.open()) { qDebug("=== %s",qPrintable(db.lastError().text())); }else { qDebug("==== ok"); } // 查询表auth_test QSqlQuery query(db); QString sql="select age from auth_test where id=:id"; query.prepare(sql); query.bindValue(":id",28); query.exec(); if(query.next()) { int age=query.value(0).toInt(); qDebug("Age is %d",age); }
运行结果:
上述截图发明,已经正常连接到数据库, 但是无法正常查询. 原来这取决于配置TDS版本,将TDS协议版本设置8.0即可
配置 /usr/local/freetds/etc/freetds.conf
[testdsn] tds version=8.0 #将默认的7.0改成8.0
再运行:
相关推荐
unixODBC+freeTDS移植.txt
在本文中,我们将深入探讨如何在Laravel 5框架中使用FreeTDS连接到SQL Server数据库。FreeTDS是一个开源的程序库,它实现了TDS(Tabular Data Stream)协议,使得Linux系统能够与Microsoft SQL Server进行通信。这...
4. **系统依赖**:在Linux环境中,可能需要安装一些依赖库,如`unixODBC`和`freetds`,它们是连接到SQL Server所需的驱动程序。在Ubuntu上,可以运行以下命令: ``` sudo apt-get install freetds-dev freetds-bin...
总的来说,“freetds-0.82RC4.tar.gz_FreeTDS_sqlserver”这个压缩包是为Linux/Unix用户提供连接Windows SQL Server的桥梁,通过ODBC驱动实现了跨平台的数据访问,对于需要在非Windows环境下操作SQL Server的开发者...
为了使Linux系统能够连接到SQL Server,还需要安装FreeTDS。FreeTDS是一组库,允许程序原生地与Microsoft SQL Server和Sybase数据库通信。从技术角度来看,FreeTDS是一个开源的TDS(Tabular Data Stream)协议实现,...
本安装包包含了两个关键组件,它们是连接SQL Server的基石:freetds和unixODBC。 1. **freetds**: freetds是一个开源的库,它实现了对SQL Server和Sybase数据库的TDS(Tabular Data Stream)协议支持。TDS是微软...
本篇文章将深入探讨如何在Linux上建立与SQL Server的连接,主要涉及UnixODBC和FreeTDS这两个关键组件,以及它们在OTL(Open Transaction Library)编程中的作用。 首先,`Linux SQLServer connect`标签表明我们需要...
本文详细介绍了在Linux环境中配置连接Microsoft SQL Server数据库的方法,包括所需的包(`unixODBC`和`freetds`)的安装、配置,以及如何使用OTL进行编程。通过遵循这些步骤,可以实现在Linux环境下顺利地与SQL ...
最后,您可以使用`sqlcmd`工具连接到SQL Server: ```bash sqlcmd -S localhost -U SA -P 'YourPassword' ``` 请将`YourPassword`替换为您为SA用户设置的密码。 #### 四、注意事项 - 在执行安装和配置过程中,请...
在Mac操作系统上使用Python连接到Sybase数据库,通常需要通过FreeTDS、UnixODBC和pyodbc这三个组件来实现。以下是详细的配置和使用步骤: **1. UnixODBC安装:** UnixODBC是Unix和Linux系统上的一个开放源代码ODBC...
如果使用的是Windows系统,ODBC驱动通常会自带安装,如果是Linux,可能需要安装`unixodbc`和`freetds`。 3. 配置Django项目:安装完必要的包之后,接下来是修改项目的配置文件`settings.py`。在`DATABASES`配置字典...
标题“unixODBC-2.2.11-7.1”指的是Unix Open Database Connectivity (unixODBC) 的一个特定版本,即版本2.2.11,发行版7.1。UnixODBC是一个开源的ODBC(Open Database Connectivity)驱动程序管理器,它为Linux和...
在Linux上,FreeTDS使得我们能够连接到运行在不同操作系统上的SQL Server数据库,包括SQL Server 2000。 2. **安装FreeTDS**: 在大多数Linux发行版中,你可以通过包管理器(如apt-get for Debian/Ubuntu或yum for...
FreeTDS是一款开源的软件库,主要用于在Unix和Linux系统上连接Microsoft SQL Server和Sybase数据库。它实现了TDS(Tabular Data Stream)协议,使得非Windows平台也能轻松地与这些数据库进行交互。本文将深入探讨...
Microsoft 提供了针对 Linux 的 SQL Server ODBC 驱动,以方便开发者在 Linux 平台上连接到 SQL Server 数据库。 #### 二、安装准备 **2.1 下载所需文件** 在安装之前,需要下载两个压缩包: - `msodbcsql-11.0....
连接SQL Server,可以安装mssql-tools和unixODBC-devel,设置环境变量,以便使用sqlcmd等工具。在进行镜像模式搭建时,证书的创建和管理是关键步骤,用于加密通信和验证身份。主体服务器和镜像服务器都需要创建证书...
《FreeTDS:连接SQL Server与Sybase的开源库》 FreeTDS是开源社区开发的一个库,用于在Unix和Linux系统上与Microsoft SQL Server和Sybase数据库进行通信。其名称"FreeTDS"中的"TDS"代表"Tabular Data Stream",这是...
Freetds 是一个开源项目,旨在提供一套兼容 Microsoft TDS (Tabular Data Stream) 协议的客户端库和工具,允许用户通过 ODBC 技术在 Linux 系统上访问运行于 Windows 系统上的 SQL Server 数据库。本篇文章将详细...