here で概説したように、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アドレスとポートを使用していることを確認しました。何が問題になる可能性があるのか、それがサーバー側にあるのか?
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 Try
tsql -S TITAN -U user -P password
OR
'dsn' => 'dblib:Host=TITAN:1433;dbname=YOURDBNAME',
http://www.freetds.org/userguide/confirminstall.htm(例3-5。)
メッセージ20009を受け取った場合は、マシンに接続していないことを思い出してください。プロトコルの障害ではなく、構成またはネットワークの問題です。サーバーが起動し、FreeTDSが使用している名前とIPアドレスを持ち、設定されたポートをリッスンしていることを確認します。
Dsnまたはodbcデータソースに問題があるようです。
最初にdsnをバイパスして、次を使用して接続してみてください。
TDSVER=8.0 tsql -S *serverIPAddress* -U *username* -P *password*
それが機能する場合、dsnまたはdsnを使用するfreetdsに問題があることがわかります。また、tdsバージョンがサーバーと互換性がない可能性があります。他のTDSVER設定(5.0、7.0、7.1)を試してください。
数え切れないほどのフラストレーションの後、私はなんとかすべてを機能させることができました。
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をテストしましょう(testはodbc.iniからのセクション名です; -vは詳細を意味します):
isql -v test username password -v
Connected!というメッセージが表示されるはずです。
私は同じ問題を抱えていました。私の問題は、サーバー上のファイアウォールが現在のIPアドレスから開かれていないことでした。
私が同じ問題を抱えていたときに、この答えが検索のために最初に出たので応答します:
[08S01] [unixODBC] [FreeTDS] [SQL Server]接続できません:Adaptive Serverが利用できないか存在しません
MSSQL名前付きインスタンスは、ポートを設定せずに適切に構成する必要があります。 ( freetds configのドキュメント はインスタンスまたはポートを両方とも設定しないことを示します)
freetds.conf
[Name]
Host = Server.com
instance = instance_name
#port = port is found automatically, don't define explicitly
tds version = 8.0
client charset = UTF-8
また、ポートを設定できるからといってodbc.iniで名前付きインスタンスを使用しているときはいけません。
ファイアウォールに問題があることがわかりました。そのため、IPがホワイトリストに登録されており、ファイアウォールが接続をブロックしていないことを確認してください。接続性は次の方法で確認できます。
tsql -H somehost.com -p 1433
私の場合、出力は次のとおりです。
Error 20009 (severity 9):
Unable to connect: Adaptive Server is unavailable or does not exist
OS error 111, "Connection refused"
There was a problem connecting to the server