2012-09-17 65 views
1

我一直在研究这个方法太长,似乎无法弄清楚。我确定我的freetds.conf,odbc.ini或odbcinst.ini中有问题。我可以使用tsql连接到我的mssql 2008服务器,但仍然无法使用isql或当然通过php。unixODBC和FreeTDS配置问题

我在CentOS 5.6上。

任何人都可以提供一些帮助吗?

谢谢! 肖恩

这是我sqltrace.log:

[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:

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

[MSSQL_DSN] 
Driver=FreeTDS 
Description=IndyArts DB on Rackspace 
Trace=No 
Server=xxx.xx.xxx.xx 
Port=1433 
Database=DBName 

ODCBINST.INI

[ODBC] 
DEBUG=1 
TraceFile=/home/ftp/sqltrace.log 
Trace=Yes 

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

回答

4

看着你sqltrace.log它看起来对我来说,一个身份验证错误 - 你得到的消息,“从服务器意外EOF”身份验证后,立即...

是否有机会在远程服务器阻塞连接你的CentOS服务器,完全或在端口1433? freetds.conf中的“客户端charset = UTF-8”会导致问题吗?

这是我在Ubuntu 12.04(Precise Pangolin)机器上的工作设置。

这里是我的/etc/odbc.ini文件:

[xyz] 
Description    = XYZ Server 
Driver     = freetds 
Database    = MyDB 
ServerName    = xyz 
TDS_Version    = 8.0 

而且我/etc/odbcinst.ini文件:

[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文件:

[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 
+0

此评论出现在搜索结果中,对解决类似问题非常有帮助。谢谢。 –

相关问题