有时isql不连接而tsql没有

时间:2012-10-18 07:59:16

标签: unixodbc

我遇到了有时在unixODBC和freeTDS周围发生的问题。我有一个CentOS网络服务器,我将配置文件安排为:

ODBC.INI:

[XYZ]
Driver = FreeTDS
Server = X.X.X.X
Port = 1433
Database = mydatabase
TDS_Version = 8.0 

ODBCINST.INI

[PostgreSQL]
Description = ODBC for PostgreSQL
Driver  = /usr/lib/libodbcpsql.so
Setup   = /usr/lib/libodbcpsqlS.so
FileUsage   = 1

[FreeTDS]
Description = v0.82 with protocol v8.0
Driver  = /usr/local/lib/libtdsodbc.so
Setup   = /usr/local/lib/libtdsodbc.so
UsageCount  = 1
Trace       = Yes
TraceFile   = /tmp/freetds.log
ForceTrace  = Yes
FileUsage   = 1

[ODBC]
;Trace  = Yes
;TraceFile  = /tmp/freetds.log
;ForceTrace = Yes
;Pooling    = No

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 
# 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

    # 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

[XYZ]
host = X.X.X.X
port = 1433
tds version = 8.0

并且当它不连接时执行isql -v XYZ用户名密码会发出此跟踪日志:

[ODBC][22870][__handles.c][444]
        Exit:[SQL_SUCCESS]
            Environment = 0x938ab58
[ODBC][22870][SQLAllocHandle.c][345]
        Entry:
            Handle Type = 2
            Input Handle = 0x938ab58
[ODBC][22870][SQLAllocHandle.c][463]
        Exit:[SQL_SUCCESS]
            Output Handle = 0x938b130
[ODBC][22870][SQLConnect.c][3549]
        Entry:            
            Connection = 0x938b130            
            Server Name = [XYZ][length = 14 (SQL_NTS)]            
            User Name = [username][length = 11 (SQL_NTS)]            
            Authentication = [*************][length = 13 (SQL_NTS)]
        UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'

        DIAG [42000] [FreeTDS][SQL Server]Login failed for user 'username'.

        DIAG [42000] [FreeTDS][SQL Server]Cannot open database "mydatabase" requested by the login. The login failed.

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

[ODBC][22870][SQLConnect.c][3917]
        Exit:[SQL_ERROR]
[ODBC][22870][SQLError.c][424]
        Entry:                
            Connection = 0x938b130                
            SQLState = 0xbf8ba54e                
            Native = 0xbf8ba350                
            Message Text = 0xbf8ba359                
            Buffer Length = 500                
            Text Len Ptr = 0xbf8ba356
[ODBC][22870][SQLError.c][461]
        Exit:[SQL_SUCCESS]                    
            SQLState = S1000                    
            Native = 0xbf8ba350 -> 0                    
            Message Text = [[unixODBC][FreeTDS][SQL Server]Unable to connect to data source]
[ODBC][22870][SQLError.c][424]
        Entry:                
            Connection = 0x938b130                
            SQLState = 0xbf8ba54e                
            Native = 0xbf8ba350                
            Message Text = 0xbf8ba359                
            Buffer Length = 500                
            Text Len Ptr = 0xbf8ba356
[ODBC][22870][SQLError.c][461]
        Exit:[SQL_SUCCESS]                    
            SQLState = 37000                    
            Native = 0xbf8ba350 -> 4060                    
            Message Text = [[unixODBC][FreeTDS][SQL Server]Cannot open database "mydatabase" requested by the login. The login failed.]
[ODBC][22870][SQLError.c][424]
        Entry:                
            Connection = 0x938b130                
            SQLState = 0xbf8ba54e                
            Native = 0xbf8ba350                
            Message Text = 0xbf8ba359                
            Buffer Length = 500                
            Text Len Ptr = 0xbf8ba356
[ODBC][22870][SQLError.c][461]
        Exit:[SQL_SUCCESS]                    
            SQLState = 37000                    
            Native = 0xbf8ba350 -> 18456                    
            Message Text = [[unixODBC][FreeTDS][SQL Server]Login failed for user 'username'.]
[ODBC][22870][SQLError.c][424]
        Entry:                
            Connection = 0x938b130                
            SQLState = 0xbf8ba54e                
            Native = 0xbf8ba350                
            Message Text = 0xbf8ba359                
            Buffer Length = 500                
            Text Len Ptr = 0xbf8ba356
[ODBC][22870][SQLError.c][461]
        Exit:[SQL_NO_DATA]
[ODBC][22870][SQLError.c][504]
        Entry:                
            Environment = 0x938ab58                
            SQLState = 0xbf8ba54e                
            Native = 0xbf8ba350                
            Message Text = 0xbf8ba359                
            Buffer Length = 500                
            Text Len Ptr = 0xbf8ba356
[ODBC][22870][SQLError.c][541]
        Exit:[SQL_NO_DATA]
[ODBC][22870][SQLFreeHandle.c][268]
        Entry:
            Handle Type = 2
            Input Handle = 0x938b130
[ODBC][22870][SQLFreeHandle.c][317]
        Exit:[SQL_SUCCESS]
[ODBC][22870][SQLFreeHandle.c][203]
        Entry:
            Handle Type = 1
            Input Handle = 0x938ab58

当tsql命令工作时......可能是什么?

unixODBC版本是2.2.11-7.1并且freeTDS没有显示为已安装但是因为/ usr / local / lib中存在libtdsodbc.so而存在..

我还要说,只有完全重启CentOS机器,isql才能恢复运行......

我能做什么或检查?非常感谢提前!

干杯, 路易

1 个答案:

答案 0 :(得分:0)

你应该修复odbc.ini,使其具有freetds.conf配置的服务器名称

instead of "Server = x.x.x.x" put "servername = XYZ"
相关问题