【问题标题】:odbc unable to connect to MSSQL data source on OS X Lionodbc 无法连接到 OS X Lion 上的 MSSQL 数据源
【发布时间】:2012-12-02 01:55:42
【问题描述】:

odbc isql 无法连接到数据源:

 $ isql SMS_GTWY username password -v

返回:

 [S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
 [01000][unixODBC][FreeTDS][SQL Server]Unknown host machine name.
 [ISQL]ERROR: Could not SQLConnect

虽然tsql 没问题:

 $ tsql -S SERVER001 -U username -P password

返回:

 locale is "C/UTF-8/C/C/C/C"
 locale charset is "UTF-8"
 using default charset "UTF8"
 1> 

$ cat ~/.freetds.conf:

 [SERVER001]
   host = 192.168.8.101
   port = 1433
   tds version = 8.0
   client charset = UTF8

$ cat ~/.odbc.ini:

  [SMS_GTWY]
  Description = SERVER001 Server
  Driver      = freetds
  Database    = SMS_GTWY
  ServerName  = SERVER001
  TDS_Version = 7.1

$ cat ~/.odbcinst.ini:

  [freetds]
  Description = MS SQL database access with FreeTDS
  Driver      = /usr/local/lib/libtdsodbc.so
  Setup       = /usr/local/lib/libtdsodbc.so
  UsageCount  = 1

freetdsunixODBC 由 homebrew 安装。

我在 CentOS 上有类似的设置,并且 odbc isql 到 mssqlserver 工作正常。有一个明显的区别,我没有看到在 OS X 上安装了libtdsS.so

# cat /etc/odbcinst.ini 在 CentOS 上:

 [freetds]
 Description = MS SQL database access with FreeTDS
 Driver      = /usr/lib/libtdsodbc.so
 Setup       = /usr/lib/libtdsS.so 
 UsageCount  = 1

这是问题的原因吗?

附言$ odbcinst -j 返回:

 unixODBC 2.3.1
 DRIVERS............: /usr/local/Cellar/unixodbc/2.3.1/etc/odbcinst.ini
 SYSTEM DATA SOURCES: /usr/local/Cellar/unixodbc/2.3.1/etc/odbc.ini
 FILE DATA SOURCES..: /usr/local/Cellar/unixodbc/2.3.1/etc/ODBCDataSources
 USER DATA SOURCES..: /Users/horace/.odbc.ini
 SQLULEN Size.......: 8
 SQLLEN Size........: 8
 SQLSETPOSIROW Size.: 8

$ odbcinst -q -d 返回:

 [freetds]

$ odbcinst -q -s 返回:

 [SMS_GTWY]

【问题讨论】:

    标签: sql-server macos odbc freetds unixodbc


    【解决方案1】:

    isql 在重新安装 unixodbcfreetds ( --with-unixodbc ) 后工作:

     brew uninstall freetds
     brew uninstall unixodbc
    
     brew install unixodbc
     brew install freetds --with-unixodbc
    

    现在,$ isql -v SMS_GTWY username password 返回:

    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    SQL> 
    

    信用:https://gist.github.com/565440

    【讨论】:

    • 你是个天才!这节省了我的培根,同时尝试遵循这些其他有用的说明。 - acloudtree.com/…
    • 谢谢。我也有这个问题。重新安装
    【解决方案2】:

    好的。我也为此浪费了两天时间,但不想使用 Homebrew 或 MacPorts。诀窍是使用 unixODBC 开关构建 FreeTDS。这会生成 odbc 驱动程序 (xxx.so),否则不会生成。开始你需要 XCode 和命令行工具已经安装。网络上有大量资源可以展示如何做到这一点。

    这是我采取的步骤。

    1. 下载Latest Stable FreeTDS
    2. 下载Latest Stable unixODBC
    3. 解压两者。
    4. 注意解压后的 unixODBC 目录的完整路径。
    5. 从终端提示导航到 FreeTDS 目录并发出以下命令。

      ./configure --with-unixodbc=第 4 步中注明的路径
      制作
      须藤制作安装

    完成后,所有内容都应该在 /usr/local/ 中。您的驱动程序应该在 /usr/local/lib 中。在 /usr/local/etc 中编辑您的设置文件。希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      对于任何使用 MacPort 的人来说,与上面唯一不同的部分是通过这种方式安装 FreeTDS:

      sudo port install freetds +mssql +odbc +universal
      

      驱动程序库将在这里:

      /opt/local/lib/libtdsodbc.so
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 2013-06-09
        • 2013-09-23
        相关资源
        最近更新 更多