使用unixODBC和FreeTDS问题连接到使用arm linux板的MSSQL数据库
问题描述:
我有问题从我的arm linux板上查询远程MSSQL数据库。 我编译了unixODBX和FreeTDS,把所有的文件都复制到arm板上,路径和Ubuntu机器中的路径相同,在那里它们被编译。 我也编译了Ubuntu机器的所有东西。 在Ubuntu机器上,我可以用tsql和isql连接和查询数据库。 在arm板上,我只能使用tsql连接和查询,而不能使用isql。使用unixODBC和FreeTDS问题连接到使用arm linux板的MSSQL数据库
编制在Ubuntu机ARM板:
unixODBX:
./configure --prefix=/usr/local/unixodbc-arm --host=arm-linux
make
make install
我删除的/ usr /本地/ unixODBC的臂/斌/ odbc_config否则我便无法对其进行编译。
freetds的:
./configure --prefix=/usr/local/freetds-arm --with-unixodbc=/usr/local/unixodbc-arm --host=arm-linux --disable-libiconv
make
make all
我用--disable-libiconv的,因为如果没有这个选项是行不通的。
比我复制“bin”,“lib”和“etc”目录中的文件到Ubuntu机器上的路径相同。
/usr/local/unixodbc-arm/bin
/usr/local/unixodbc-arm/lib
/usr/local/unixodbc-arm/etc
/usr/local/freetds-arm/bin
/usr/local/freetds-arm/lib
/usr/local/freetds-arm/etc
的configuartion文件如下:
freetds.conf:
[email protected]:/# cat /usr/local/freetds-arm/etc/freetds.conf
# $Id: freetds.conf,v 1.12 2007-12-25 06:02:36 jklowden Exp $
#
# This file is installed by FreeTDS if no file by the same on a multi-user system
# name is found in the installation directory.
#
# For information about the layout of this file and its settings,
# see the freetds.conf manpage "man freetds.conf".
# Global settings are overridden by those in a database
# server specific section
[global]
# TDS protocol version
; tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
# A typical Sybase server
[egServer50]
host = symachine.domain.com
port = 5000
tds version = 5.0
# A typical Microsoft server
[egServer70]
host = ntmachine.domain.com
port = 1433
tds version = 7.0
# Microsoft SQL Server
[SQLEXPRESS]
host = 192.168.0.195
port = 1433
tds version = 7.0
client charset = UTF-8
[email protected]:/#
ODBCINST.INI:
[email protected]:/# cat /usr/local/unixodbc-arm/etc/odbcinst.ini
[FreeTDS]
Description=TDS driver (Sybade/MS SQL)
Driver=/usr/local/freetds-arm/lib/libtdsodbc.so
UsageCount=2
[email protected]:/#
ODBC.INI
[email protected]:/# cat /usr/local/unixodbc-arm/etc/odbc.ini
[SQLEXPRESS]
Description = Test to FreeTDS
Driver = FreeTDS
Trace = Yes
TraceFile = sql.log
Database = gti
Servername = SQLEXPRESS
UserName = gti_monitor
Password = gti_monitor
Port = 1433
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
[email protected]:/#
TSQL配置:
[email protected]:/# tsql -C
Compile-time settings (established with the "configure" script)
Version: freetds vdev.0.99.134
freetds.conf directory: /usr/local/freetds-arm/etc
MS db-lib source compatibility: no
Sybase binary compatibility: no
Thread safety: yes
iconv library: no
TDS version: 5.0
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: no
OpenSSL: no
GnuTLS: no
[email protected]:/#
ODBCINST配置:
[email protected]:/# odbcinst -j
unixODBC 2.3.4
DRIVERS............: /usr/local/unixodbc-arm/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/unixodbc-arm/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/unixodbc-arm/etc/ODBCDataSources
USER DATA SOURCES..: /home/root/.odbc.ini
SQLULEN Size.......: 4
SQLLEN Size........: 4
SQLSETPOSIROW Size.: 2
[email protected]:/#
运行TSQL:
[email protected]:/# tsql -S SQLEXPRESS -U gti_monitor -P gti_monitor
locale is "C"
locale charset is "ANSI_X3.4-1968"
using default charset "UTF-8"
1> select * from pressures
2> go
id datetime press1 press2
NULL NULL 1 2
(1 row affected)
1> quit
[email protected]:/#
运行ISQL:
[email protected]:/# isql SQLEXPRESS gti_monitor gti_monitor -v
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[ISQL]ERROR: Could not SQLConnect
[email protected]:/#
这些comman ds都在Ubuntu机器上使用相同的配置文件。
任何人都可以帮忙吗? 非常感谢。
答
从ISQL手册页...
ISQL DSN [USER [密码] [选项]
DSN。数据源名称,应该用于连接数据库。按照该顺序在/etc/odbc.ini和$ HOME/.odbc.ini文件中查找数据源,后者覆盖前者。
带有-S的Tsql正在使用您的freetds.conf文件。但它看起来像/usr/local/unixodbc-arm/etc/odbc.ini中的odbc.ini文件
非常感谢。现在它正在工作。 – GrandJonas