MAC OSX - 如何解决“无法SQLConnect”错误

时间:2017-08-24 13:47:45

标签: sql-server database macos freetds unixodbc

我正在尝试连接到我的sql server数据库,但它无法正常工作。

freetds正在工作,请参阅命令:

#!/bin/sh
first_arg=$1
shift
printf '%s\n' "$@"  # Prints all but the first argument, one per line

输出:

tsql -S myserver.database.windows.net -U myuser -P mypassword

但是当我尝试运行命令isql时,它会返回错误。

命令:

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

输出:

isql -v MYSERVER myuser mypassword

我的文件:

freetds.conf:

[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect

ODBCINST.INI:

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

    # If you experience TLS handshake errors and are using openssl,
    # try adjusting the cipher list (don't surround in double or single quotes)
    # openssl ciphers = HIGH:!SSLv2:!aNULL:-DH

[MYSERVER]
   host = myserver.database.windows.net
   port = 1433
   tds version = 8.0
   client charset = UTF8

ODBC.INI:

[FreeTDS]
Description = FreeTDS
Driver      = /usr/local/lib/libtdsodbc.so
Setup       = /usr/local/lib/libtdsodbc.so
UsageCount  = 1
Trace       = Yes
TraceFile   = /Users/giorgecaique/Documents/sql.log

任何人都可以帮助我吗?我已经看过很多关于如何解决这个问题的教程,但没有一个对我有用。

3 个答案:

答案 0 :(得分:0)

odbc.ini文件中,您需要一个Servername属性,该属性指向freetds.conf中DSN的名称。另外,8.0不是有效版本(长篇文章,请参阅文档),而UTF-8不是UTF8。例如:

freetds.conf

[MYSERVER]
   host = myserver.database.windows.net
   port = 1433
   tds version = 7.1
   client charset = UTF-8

然后在odbc.ini

[MYSERVER]
Description = MYSERVER
Driver      = FreeTDS
Database    = mydatabase
Servername  = MYSERVER
UserName    = myuser
Password    = mypassword
TDS_Version = 7.1
祝你好运!

答案 1 :(得分:0)

您是否检查过您拥有图书馆/usr/local/lib/libtdsodbc.so

我遇到了类似的错误。我在link上按照本指南修正了错误。

我相信您可能没有安装freetds的驱动程序,您可以通过Homebrew安装这些驱动程序: $ brew install freetds --with-unixodbc

答案 2 :(得分:0)

你是否从这里尝试了emehex的答案:

Can't open lib 'ODBC Driver 13 for SQL Server'? Sym linking issue?

sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini
sudo ln -s /usr/local/etc/odbc.ini /etc/odbc.ini