首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unixODBC和FreeTDS配置问题

unixODBC和FreeTDS配置问题
EN

Stack Overflow用户
提问于 2012-09-17 11:13:58
回答 2查看 9.9K关注 0票数 1

我已经在这方面工作了很长时间,似乎无法弄清楚。我确信我的freetds.conf、odbc.ini或odbcinst.ini出了什么问题。我可以使用tsql连接到我的mssql2008服务器,但仍然不能使用isql,当然也不能通过php。

我在CentOS 5.6上。

有人能提供一些帮助吗?

谢谢!肖恩

这是在我的sqltrace.log中:

代码语言:javascript
复制
 [ODBC][12249][1347850711.939084][__handles.c][459]
    Exit:[SQL_SUCCESS]
    Environment = 0x1b5fc6c0
    [ODBC][12249][1347850711.939149][SQLAllocHandle.c][375]
    Entry:
        Handle Type = 2
            Input Handle = 0x1b5fc6c0
[ODBC][12249][1347850711.939187][SQLAllocHandle.c][493]
        Exit:[SQL_SUCCESS]
            Output Handle = 0x1b5fcff0
[ODBC][12249][1347850711.939231][SQLConnect.c][3654]
        Entry:
            Connection = 0x1b5fcff0
            Server Name = [MSSQL_DSN][length = 9 (SQL_NTS)]
            User Name = [InetIndyArtsRemote][length = 18 (SQL_NTS)]
            Authentication = [**********][length = 10 (SQL_NTS)]
        UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'

        DIAG [01000] [FreeTDS][SQL Server]Unexpected EOF from the server

        DIAG [01000] [FreeTDS][SQL Server]Adaptive Server connection failed

        DIAG [S1000] [FreeTDS][SQL Server]Unable to connect to data source

[ODBC][12249][1347850711.949640][SQLConnect.c][4021]
        Exit:[SQL_ERROR]
[ODBC][12249][1347850711.949694][SQLFreeHandle.c][286]
        Entry:
            Handle Type = 2
            Input Handle = 0x1b5fcff0
[ODBC][12249][1347850711.949735][SQLFreeHandle.c][337]
        Exit:[SQL_SUCCESS]
[ODBC][12249][1347850711.949773][SQLFreeHandle.c][219]
        Entry:
            Handle Type = 1
            Input Handle = 0x1b5fc6c0

freetds.conf:

代码语言:javascript
复制
    #   $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
    # 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 = 8.0

            # 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
            dump file append = yes

            # 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

[IndyArtsDB]
        host = xxx.xx.xxx.xx
        port = 1433
        tds version = 8.0
        client charset = UTF-8

ODBC.INI

代码语言:javascript
复制
[MSSQL_DSN]
Driver=FreeTDS
Description=IndyArts DB on Rackspace
Trace=No
Server=xxx.xx.xxx.xx
Port=1433
Database=DBName

ODCBINST.INI

代码语言:javascript
复制
[ODBC]
DEBUG=1
TraceFile=/home/ftp/sqltrace.log
Trace=Yes

[FreeTDS]
Description=MSSQL Driver
Driver=/usr/local/lib/libtdsodbc.so
UsageCount=1
EN

回答 2

Stack Overflow用户

发布于 2012-10-03 22:04:40

看看你的sqltrace.log,在我看来它像是一个身份验证错误--你在身份验证后立即收到“来自服务器的意外EOF”消息...

远程服务器是否会完全或在端口1433上阻止来自CentOS服务器的连接?有没有可能是freetds.conf中的"client charset = UTF-8“导致了这个问题?

这是我在Ubuntu 12.04 (精确穿山甲)机器上的(工作)设置。

下面是我的/etc/odbc.ini文件:

代码语言:javascript
复制
[xyz]
Description             = XYZ Server
Driver                  = freetds
Database                = MyDB
ServerName              = xyz
TDS_Version             = 8.0

和我的/etc/odbcinst.ini文件:

代码语言:javascript
复制
[freetds]
Description     = MS SQL database access with Free TDS
Driver          = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Setup           = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
UsageCount      = 1

最后是我的/etc/freetds/freetds.conf文件:

代码语言:javascript
复制
[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

# The XYZ database
[xyz]
        host = XYZ
        port = 1433
        tds version = 8.0
票数 4
EN

Stack Overflow用户

发布于 2014-10-16 16:34:33

看起来FreeTDS中的版本号已经从8.0更改为7.1,9.0更改为7.2。请参阅http://www.freetds.org/userguide/choosingtdsprotocol.htm

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12452747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档