我有一个Ubuntu 12.04服务器,我试图build立一个MSSQL数据库的连接。
我设法使用tsql和isql连接,但osql不工作,并使用PDO与PHP连接也无法正常工作..我会尽量提供尽可能多的信息,如果你需要更多的只是让我知道我将编辑。
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服务器(Ubuntu中的apache2目录: /var/www/html中创build一个info.php文件以查看详细信息。 使用odbcinst -j获取unixODBC和tsql -C加载的configuration文件以获取FreeTDS的详细信息; 检查是否是MS db-lib source compatibility: yes 。
如果MS db-lib为“no”,则需要使用--enable-msdblibconfigurationfreetds。
我的./configure行:
./configure --with-tdsver=8.0 --with-unixodbc=/usr/local --enable-msdblib
然后sudo make && sudo make install
这是我的工作configuration:
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