PHP/Linux 환경에서 두 개의 MSSQL 서버를 연결해야합니다. 그래서 unixODBC와 PDO_ODBC를 사용하기로 결정했습니다. 서버 1에PDO_ODBC 및 unixODBC가 기본값이 아닌 포트와 MSSQL을 연결할 수 없습니다.
MSSQL : 이 10.10.10.8:14233 (비 기본 포트 번호)
내 생각 : 서버 2에 10.10.10.5:1433
MSSQL 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');
이 코드는 작동하지 않습니다. 연결 실패.
$db = new PDO('odbc:Driver=SQL Server Native Client 11.0; Server=10.10.10.8; Port=14233; Database=dbname; UID=uid; PWD=pwd');
이상하게도이 코드는 잘못된 값으로 작동합니다. :(
$db = new PDO('odbc:Driver=SQL Server Native Client 11.0; Server=10.10.10.5; Port=14233; Database=dbname; UID=uid; PWD=pwd');
는 내가 다른 설정을 시도 사람이 /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
를 사용하여. PDO의 DSN에 설정 포트를 무시하고,이 코드는 연결을하지 않았다고 결론을 내렸다.
$dbh = new PDO('odbc:odbc-erp', $uid, $pwd);
오류 메시지 :
DB Error: SQLSTATE[HYT00] SQLConnect: 0 [unixODBC][Microsoft][SQL Server Native Client 11.0]Login timeout expired in /home/user/public_html/test/testodbc.php on line 40
및이 코드는 정상적으로 작동합니다.
[odbc-mes]
Driver=SQL Server Native Client 11.0
Description=MSSQL
Trace=Yes
Server=10.10.10.5
Port=14233 // Wrong value (10.10.10.5 server port is 1433.)
Database=dbname
그리고이 코드는 연결하지 않았습니다.
$dbh = new PDO('odbc:odbc-mes', $uid, $pwd);
포트가 모두 열렸습니다. tcpdump
연결 사용은 항상 ms-sql-s (1433)를 사용합니다. sqlcmd
은 잘 작동합니다.
# sqlcmd -U uid -P pwd -S 10.10.10.8,14233 -d OES
1> select @@version
2> go
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4033.0 (X64)
Jul 9 2014 16:04:25
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
(1 rows affected)
1>
제가 누락 된 부분이 있습니다. 아니면 mssql에 연결하는 다른 방법이 있습니까?
- 에 CentOS 6.6
- PHP는 5.5.19
- SQLNCLI-11.0.1790.0
-
# rpm -qa
php-5.5.19-2.el6.remi.x86_64
php-mssql-5.5.19-2.el6.remi.x86_64
php-odbc-5.5.19-2.el6.remi.x86_64
php-pdo-5.5.19-2.el6.remi.x86_64
# sqlcmd
Microsoft (R) SQL Server Command Line Tool
Version 11.0.1790.0 Linux
Copyright (c) Microsoft Corporation. All rights reserved.
# cat /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
잘 작동합니다! 참조 해 주셔서 감사합니다. 사실, 그 설정을 시도했지만 연결이 불안정하여 오류가 발생했습니다. – ukits