54

ここで概説したように、unixODBC と FreeTDS を使用して Mac から SQL Server 2005 DB に接続しようとしています。ただし、同じセットアップを使用して別の DB に接続しようとすると、次のようになります。

Connection Failed:[FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist.

これが私のfreetds.confセットアップです:

[my_db]
host = 12.34.56.789
port = 1433
tds version = 8.0

そして、ここに私の odbc.ini があります:

[my_dsn]
Driver = /opt/local/lib/libtdsodbc.so
Description = My Database
Trace = no
Servername = my_db
Database = MyDB

[ODBC Data Sources]
my_dsn = FreeTDS

このコンピューターにセットアップした他の DB (上記のリンク先のブログ記事で説明) にはまだ接続できるので、エラーが Mac 側にあるのではないことは確かです。正しい IP アドレスとポートを使用していることをサーバーで確認しました。何が問題なのか、それがサーバー側にあるかどうかについて何か考えはありますか?

4

9 に答える 9

45

1. SQL サーバーに関する情報を参照する

tsql -LH SERVER_IP_ADDRESS

locale is "C"
locale charset is "646"
ServerName TITAN
InstanceName MSSQLSERVER
IsClustered No
Version 8.00.194
tcp 1433
np \\TITAN\pipe\sql\query

2. freetds.conf を設定します

tsql -C    
freetds.conf directory: /usr/local/etc

[TITAN]
host = SERVER_IP_ADDRESS
port = 1433
tds version = 7.2

3 やってみる

tsql -S TITAN -U user -P password

また

 'dsn' => 'dblib:host=TITAN:1433;dbname=YOURDBNAME',

http://www.freetds.org/userguide/confirminstall.htm (例 3-5)も参照してください。

メッセージ 20009 が表示された場合は、マシンに接続していないことを思い出してください。これは構成またはネットワークの問題であり、プロトコルの障害ではありません。サーバーが起動していて、FreeTDS が使用している名前と IP アドレスを持ち、構成されたポートをリッスンしていることを確認します。

于 2014-10-07T06:01:13.090 に答える
14

数え切れないほどのフラストレーションの後、私はなんとかすべてを機能させることができました:

odbcinst.ini:

[FreeTDS]
Description = FreeTDS Driver v0.91
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
fileusage=1
dontdlclose=1
UsageCount=1

odbc.ini:

[test]
Driver = FreeTDS
Description = My Test Server
Trace = No
#TraceFile = /tmp/sql.log
ServerName = mssql
#Port = 1433
instance = SQLEXPRESS
Database = usedbname
TDS_Version = 4.2

FreeTDS.conf:

[mssql]
host = hostnameOrIP
instance = SQLEXPRESS
#Port = 1433
tds version = 4.2

最初のテスト接続 ( mssqlはfreetds.confのセクション名です):

tsql -S mssql -U username -P password

いくつかの設定が表示されますが、エラーはなく、1>プロンプトのみが表示されます。終了するには、 quitを使用します。

次に、DSN/FreeTDS をテストしましょう ( testodbc.iniのセクション名です。 -v は詳細を意味します)。

isql -v test username password -v

Connected! というメッセージが表示されます。

于 2016-12-14T01:01:06.233 に答える
12

dsn または odbc データ ソースに問題があるようです。

最初に dsn をバイパスして、次を使用して接続してみてください。

TDSVER=8.0 tsql -S *serverIPAddress* -U *username* -P *password*

それが機能する場合は、dsn または dsn を使用する freetds に問題があることがわかります。また、tds のバージョンがサーバーと互換性がない可能性もあります。他の TDSVER 設定 (5.0、7.0、7.1) を試してみることをお勧めします。

于 2012-01-31T16:28:56.840 に答える
-6

つぼみ、selinux を無効にするか、RedHat/CentOS サーバーに以下を追加します。

setsebool -P httpd_can_network_connect_db 1
setsebool -P httpd_can_network_connect 1

いつも最高!

于 2015-10-09T15:40:19.837 に答える