2013-03-27 98 views
1

爲什麼mssql_connect()無法通過隧道連接到mssql數據庫。ssh隧道不適用於mssql_connect()

我創建的隧道像遠程服務器:

$ssh -L 1433:db_server:1433 [email protected]_server 

此轉發本地端口1433 DB_SERVER。我測試過了。

然而,當我嘗試使用PHP連接數據庫不起作用

mssql_connect("localhost:1433", 'db_user', 'db_password') 

詳細(編輯):

  1. DB_SERVER:在安裝SQL Server遠程數據庫服務器。 DB服務器有防火牆。只有mid_server可以連接
  2. mid_server:中凡允許連接DB_SERVER
+0

你有沒有試過這個連接與此登錄細節的PHP? – CroiOS 2013-03-27 07:46:15

+0

對不起......我嘗試在隧道開啓時與Navicat連接。它用Navicat連接相同的用戶/密碼。 – Elisa 2013-03-27 07:52:23

+0

只需檢查:是本地主機上的網絡服務器? – fredrik 2013-03-27 08:03:40

回答

1

我把它固定它通過使上freetds.conf一些改變

[global] 
    # TDS protocol version 
; tds version = 4.2 

[global] 
    # TDS protocol version 
tds version = 7.0 

並重新啓動apache。

+0

它像一顆寶石一樣工作,謝謝你。 – Zeeshan 2015-02-14 07:19:44

0

我假設你是從Linux(或者MacOS)框MSSQL服務器的連接,可能使用freetds的連接器。需要檢查兩件事:如果服務器正確地偵聽端口並且FreeTDS在Linux機器上是否正確安裝。既然你可以連接到另一個客戶端,那麼問題應該在FreeTDS上。

確保FreeTDS已安裝並正確配置。嘗試直接與(應該提示密碼)連接到服務器:

# tsql -S localhost -U db_user 

如果有必要,調整端口/區域/版本上freetds.conf信息。欲瞭解更多信息:

+0

上連接隧道,我收到以下回復「錯誤20009(嚴重性9): \t無法連接:Adaptive Server不可用或不存在 \t操作系統錯誤61,」連接被拒絕「 – Elisa 2013-05-06 08:29:48