我正在運行PHP腳本從命令行對SQL Server 2005使用MS驅動程序的PHP和獲取超時。查詢大約需要2分鐘從SQL Server Management Studio中返回> 300,000行。對SQL Server 2005的PHP是超時
有腳本多個查詢,併爲每一個我做了sqlsrv_connect()
,執行查詢,然後sqlsrv_free_stmt()
和sqlsrv_errors():
sqlsrv_close()
輸出
Array
(
[0] => Array
(
[0] => 08S01
[SQLSTATE] => 08S01
[1] => 258
[code] => 258
[2] => [Microsoft][SQL Native Client]Shared Memory Provider: Timeout error [258].
[message] => [Microsoft][SQL Native Client]Shared Memory Provider: Timeout error [258].
)
[1] => Array
(
[0] => 08S01
[SQLSTATE] => 08S01
[1] => 258
[code] => 258
[2] => [Microsoft][SQL Native Client]Communication link failure
[message] => [Microsoft][SQL Native Client]Communication link failure
)
[2] => Array
(
[0] => 08S01
[SQLSTATE] => 08S01
[1] => 0
[code] => 0
[2] => [Microsoft][SQL Native Client]Communication link failure
[message] => [Microsoft][SQL Native Client]Communication link failure
)
)
我搬到PDO爲SQL Server,Oracle和ODBC(爲Teradata連接)。 我只有兩個問題: 用於PHP的MS SQL Server驅動程序用於返回受查詢影響的行(通過在表加載前後執行count(*)來解決此問題) PDO與Teradata的ODBC連接varchar字段大於400字節會返回一個空字符串,並且查詢後面的所有字段也會被清空。我認爲這是一個顯然固定的舊bug,但我升級到PHP 5.3.1並仍然遇到它。解決方法是將所有更長的varchar字段轉換爲更短的長度。 – Zan 2010-03-16 00:22:39