Ubuntu 12.04サーバーがあり、MSSQLデータベースへの接続を確立しようとしています。
tsql
とisql
を使用して接続できましたが、osql
が機能せず、PHP PDOを使用して接続することもできません。作業中..できるだけ多くの情報を提供するように努めます。さらに必要な場合は、お知らせください。編集します。
freetds.conf:
[MSSQL]
Host = TPSACC
port = 54488
tds version = 8.0
odbc.ini:
[MSSQL]
Description = MS SQL connection to PRODUCTION database
Driver = FreeTDS
Database = PRODUCTION
Server = TPSACC
UserName = sa
Password = pass
Trace = No
TDS_Version = 8.0
Port = 54488
odbcinst.ini:
[FreeTDS]
Description = ODBC for Microsoft SQL
Driver = /usr/local/lib/libtdsodbc.so
UsageCount = 1
Threading = 2
〜> isql MSSQL sa pass
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
〜> tsql -S MSSQL -U 'sa' -P 'pass'
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
〜> osql -S MSSQL -U sa -P pass
checking shared odbc libraries linked to isql for default directories...
strings: '': No such file
trying /tmp/sql ... no
trying /tmp/sql ... no
trying /etc ... OK
checking odbc.ini files
reading /home/toolplas/.odbc.ini
[MSSQL] not found in /home/toolplas/.odbc.ini
reading /etc/odbc.ini
[MSSQL] found in /etc/odbc.ini
found this section:
[MSSQL]
Description = MS SQL connection to PRODUCTION database
Driver = FreeTDS
Database = PRODUCTION
Server = TPSACC
UserName = sa
Password = pass
Trace = No
TDS_Version = 8.0
Port = 54488
looking for driver for DSN [MSSQL] in /etc/odbc.ini
found driver line: " Driver = FreeTDS"
driver "FreeTDS" found for [MSSQL] in odbc.ini
found driver named "FreeTDS"
"FreeTDS" is not an executable file
looking for entry named [FreeTDS] in /etc/odbcinst.ini
found driver line: " Driver = /usr/local/lib/libtdsodbc.so"
found driver /usr/local/lib/libtdsodbc.so for [FreeTDS] in odbcinst.ini
/usr/local/lib/libtdsodbc.so is an executable file
"Server" found, not using freetds.conf
Server is "TPSACC"
osql: no IP address found for "TPSACC"
PHP私は持っています:
$conn = new PDO ("dblib:Host=TPSACC;dbname=PRODUCTION","$username","$pw");
..または..
$conn = new PDO ("dblib:Host=TPSACC;port=54488;dbname=PRODUCTION","$username","$pw");
そして、両方ともこのエラーを返します。
SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)
私はここで数日間立ち往生していて、接続の半分だけが実際に機能する理由を完全に理解することはできません。
ありとあらゆる助けに感謝します、ありがとう!
PHPモジュールがインストールされていますか?
詳細を表示するには、<?php phpinfo() ?>
を使用してWebサーバー(Apache2ディレクトリ:Ubuntuではinfo.php
)に/var/www/html
ファイルを作成します。 unixODBCによってロードされた構成ファイルを取得するにはodbcinst -j
を使用し、FreeTDSの詳細を取得するにはtsql -C
を使用します。がMS db-lib source compatibility: yes
かどうかを確認します。
MS db-lib
が「いいえ」の場合、--enable-msdblib
を使用してfreetdsを構成する必要があります。
私の./configure
行:
./configure --with-tdsver=8.0 --with-unixodbc=/usr/local --enable-msdblib
次にSudo make && Sudo make install
これは私の作業構成です:
Freetds.conf:
[MSSQL]
Host = 192.168.1.200
port = 1433
tds version = 8.0
client charset = UTF-8
odbc.ini:
[mssql]
Description = MSSQL Server
Driver = freetds #The odbcinst.ini driver name
ServerName = MSSQL # The Freetds.conf connection name
Database = database
TDS_Version = 8.0
odbcinst.ini
[freetds]
Description = MS SQL database access with Free TDS
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbclibtdsS.so
UsageCount = 1