2012-01-04 347 views
1

我有一臺計算機A,它具有一個連接並在計算機B1中操作數據庫的PHP程序。爲了連接到MS SQL服務器,我使用了以下腳本,該腳本運行良好。這個SQL服務器上只有一個帳戶,它是「sa」。用戶'sa'登錄失敗

$server = 'WAREHOUSE1\MYDB';

$connectionInfo = array("UID" => "sa", "PWD" => "something", "Database"=>"MYDB");

$dbcMssql = sqlsrv_connect($server, $connectionInfo);

我們得到了一臺新電腦,B2,因爲它是又老又慢替換此計算機。我建立了新的數據庫,並從B1中恢復它,像在B1中一樣設置防火牆設置,選中了「允許遠程連接」,並在MS SQL Server Management Studio中選擇了「SQL Swrver和Windows身份驗證模式」等。我是能夠使用MS SQL Server Management Studio連接計算機A的計算機B1和B2上的數據庫。我甚至使用相同的用戶ID(「sa」)和密碼將表格連接到MS Access(OBDC數據庫)。

問題是,在新計算機上,B2,我的PHP腳本不再工作,即使我可以使用MS SQL程序連接到它。我不記得除了我在創建B1時已經做過的事情之外的其他事情。錯誤如下,從sqlsrv_errors()

[SQLSTATE] => 28000

[code] => 18456

[message] => [Microsoft][SQL Server Native Client 10.0][SQL Server]Login failed for user 'sa'.

沒有登錄由於某種原因,在出於某種原因服務器文件夾中的錯誤日誌文件中的錯誤,所以我不知道的是什麼狀態錯誤是..可能是什麼問題?我在整個下午閱讀了幾篇文章,但我無法完成這項工作!再一次,從A連接到B1很好,這讓我相信我沒有在B2上設置任何東西。 B1和B2具有相同版本的SQL服務器。

+0

MYDB是實例名稱還是數據庫名稱?另外,你不應該使用'sa'這個;創建一個新帳戶。檢查以確保數據庫服務器接受混合模式身份驗證每http://msdn.microsoft.com/en-us/library/ms144284.aspx – 2012-01-04 23:22:57

+0

我打賭$ 100,'sa'的密碼是...'sa' ;) – Jakub 2012-01-04 23:37:15

+0

@Jeremy Holovacs:MYBD是實例名稱和數據庫名稱(它們是不是一樣的東西?)。我檢查了你的鏈接,但是Win7 Home沒有secpol.msc ..但是,在SQL服務器上設置混合身份驗證模式是不夠的,但是,正如我在OP中描述的那樣? – musicliftsme 2012-01-04 23:48:08

回答

1

IRC通過默認安裝禁用TCP/IP協議。你需要去SQL Server Config並從那裏啓用它。

編輯:好的,只需再次閱讀,如果你能夠通過TCP/IP remotelly連接,那麼它應該從你的PHP腳本也是。你確定連接字符串最終指向右邊的(B2?)服務器嗎?它可以是名稱解析問題嗎?

+0

是否有另一種檢查/設置TCP/IP協議而不是使用SQL Server Config的方法?當我打開配置管理器時,出於某種原因,「MYDB」實例未在計算機B1或B2的安裝中列出。它顯示計算機上的其他數據庫,但不顯示MYDB。 – musicliftsme 2012-01-04 23:46:14

+0

打開Sql Server配置管理器。在SQL Server網絡配置下,你應該有一個「MYDB協議」。無法想象有另一種方式來打開它。它可能是某種訪問權限?只是爲了確保SQL Server Conf應該以管理員身份啓動 – Radu094 2012-01-05 00:04:14

+0

我也嘗試了「以管理員身份運行」,但它仍然不存在於SQL Server配置中。管理器(本地) - > SQL Server 2005網絡配置..我只看到「UPSxxx的協議」,這是一個UPS程序的數據庫。它可能是某種MYDB實例的版本問題?我有一種感覺,這是某種權限問題..但我作爲管理員登錄Win7。 – musicliftsme 2012-01-05 00:13:41