2013-03-27 102 views
1

我試圖用PHP連接到MSSQL數據庫,並在嘗試連接時遇到非常令人沮喪的錯誤。它加載了一分鐘,打印出下面的消息之前:使用SQLSrv和PHP 5.4.7連接到MSSQL時出錯

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08001]: 
[Microsoft][SQL Server Native Client 11.0]Named Pipes Provider: Could not open a connection to SQL Server [53]. 

這裏是我的連接字符串:

DB::config("sqlsrv:Server={$dbHost} ; Database={$dbName}", $dbUser, $dbPass); 

在我的DB類:

public static function config($dsn, $user, $pass) 
    { 
     self::$_pdo = @new PDO($dsn, $user, $pass); 
     ...// intentionally left out 

我很困惑。我在我的php.ini文件中配置了以下模塊:extension = php_pdo_sqlsrv_54_ts.dll。雖然我覺得我安裝了它的權利,我沒有收到關於驅動程序不能正常工作的錯誤信息,PHP的此位打印什麼:

if (function_exists('sqlsrv_connect')) 
    echo "hey"; 

,正如你可以從上面的SQL服務器本機客戶端我的錯誤信息看11似乎在工作。我在Windows平臺上。我試圖禁用防火牆無濟於事。我沒有太多有關SQL服務器的信息,或者我會在這裏分享它。

這是我第一次發佈在Stack上,所以我很抱歉如果我遺漏了一條關鍵信息,或者我沒有按照某種方式遵守適當的禮儀,但任何幫助都是絕對讚賞的。


此外,我應該補充一點,我已經做了太多谷歌搜索,並沒有取得任何成功。

+0

SQL Server是否允許網絡連接?使用SQL Express,默認情況下它們是禁用的 – 2013-03-27 07:48:16

+0

實際上,這是我的機器試圖連接的東西。我試圖連接到不同的服務器,也失敗了。此外,有人使用Mac的sqlsrv等效連接可以。 – ncksllvn 2013-03-27 14:52:04

回答

6

我的安裝過程確實有效,但連接確實無效。我應該一直使用IP地址作爲主機名,我不知道。我還在端口號前使用冒號而不是逗號。最後,連接字符串中不允許有空格,我認爲它會被自動刪除。所以,這裏是對於那些你一個有效的連接字符串,它可能會發現自己處於同樣的困境:

$connectionString="sqlsrv:Server=123.123.12.1,9864;Database=mssqldatabaseWootWoot"; 

此外,在迴應我先前有關功能sqlsrv_connect觀察,我沒有啓用驅動程序需要該功能。它位於php_sqlsrv_54_ts.dll中,它在啓用後將該功能報告爲現有。

感謝任何花時間解決這個問題的人。

1

我遇到了同樣的問題,但我發現我不需要使用IP地址,服務器名稱只是工作。此外,我不知道我的服務器使用什麼端口,我發現這裏的信息:How to find the port for MS SQL Server 2008?

我還發現,在獲得有用以下鏈接PDO的工作:

PHP PDO Connection to SQL Server with integrated security?

Use of PDO in classes

MS SQL Server (PDO) — Microsoft SQL Server Functions (PDO_SQLSRV)

我知道ncksllvn解決了他的問題,所以我希望這可以幫助其他任何人訪問!