我必须在php/linux环境中连接两个MSSQL服务器.所以我决定使用unixODBC和PDO_ODBC.
server1上的mssql:10.10.10.5:1433
server2上的mssql:10.10.10.8 : 14233(非默认端口号)
我认为PDO_ODBC或unixODBC存在端口问题.我在下面尝试了一些代码.
这段代码工作正常.连接成功.
$db = new PDO('odbc:Driver=SQL Server Native Client 11.0; Server=10.10.10.5; Port=1433; Database=dbname; UID=uid; PWD=pwd');
Run Code Online (Sandbox Code Playgroud)
这段代码不起作用.连接失败.
$db = new PDO('odbc:Driver=SQL Server Native Client 11.0; Server=10.10.10.8; Port=14233; Database=dbname; UID=uid; PWD=pwd');
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这个代码也适用于错误的值.:(
$db = new PDO('odbc:Driver=SQL Server Native Client 11.0; Server=10.10.10.5; Port=14233; Database=dbname; UID=uid; PWD=pwd');
Run Code Online (Sandbox Code Playgroud)
我得出结论,有人忽略了PDO的dsn上的端口设置.
我也尝试过使用其他设置 /etc/odbc.ini
[odbc-erp]
Driver=SQL Server Native Client 11.0
Description=MSSQL
Trace=Yes
Server=10.10.10.8
Port=14233
Database=dbname
Run Code Online (Sandbox Code Playgroud)
并且,此代码没有建立连接.
$dbh = new PDO('odbc:odbc-erp', $uid, $pwd);
Run Code Online (Sandbox Code Playgroud)
错误信息:
DB Error: SQLSTATE[HYT00] SQLConnect: 0 …Run Code Online (Sandbox Code Playgroud)