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...
Microsoft 提供了针对 Linux 的 SQL Server ODBC 驱动,以方便开发者在 Linux 平台上连接到 SQL Server 数据库。 #### 二、安装准备 **2.1 下载所需文件** 在安装之前,需要下载两个压缩包: - `msodbcsql-11.0....
《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 数据库。本篇文章将详细...
在Linux环境下,unixODBC扮演了桥梁的角色,连接应用程序和各种数据库服务器,包括SQL Server。 描述中的“ODBC11 sqlserver client for linux”表明这是一个专为连接到Microsoft SQL Server的ODBC驱动程序,适用于...
在Red Hat 5.2操作系统环境下,安装和配置FreetDS 0.82是一项重要的任务,特别是对于那些需要与Microsoft SQL Server或Sybase数据库进行交互的系统管理员来说。FreetDS是一个开源库,它提供了在Unix和Linux系统上...