PHP против сервера SQL 2005 истекает - PullRequest
0 голосов
/ 28 октября 2009

Я запускаю скрипт php из командной строки для SQL Server 2005, используя драйвер MS для PHP и получая тайм-ауты. Запрос занимает около 2 минут из SQL Server Management Studio и возвращает> 300 000 строк.

В скрипте есть несколько запросов, и для каждого я делаю sqlsrv_connect(), выполняю запрос, а затем sqlsrv_free_stmt() и sqlsrv_close()

Выход из sqlsrv_errors():

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
        )
) 

Ответы [ 2 ]

1 голос
/ 28 октября 2009

Мне никогда не удавалось заставить SQL Server 2005 и PHP общаться с помощью драйвера Microsoft, но он прекрасно работал с ODBC-драйвером PDO . Возможно, стоит попробовать.

Простое соединение:

$host     = '1.2.3.4';
$port     = '1433';
$database = 'MyDatabase';
$user     = 'MyDatabaseUser';
$password = 'MyDatabasePassword';

$dsn = "odbc:DRIVER={SQL Server};SERVER=$server,$port;DATABASE=$database";

try {
  // connect
  $conn = new PDO($dsn,$user,$password);
} catch (PDOException $e) {
  // fancy error handling
}
0 голосов
/ 28 октября 2009

Несколько вещей, о которых я могу думать.

На сервере базы данных вы настроили MS SQL для разрешения удаленных подключений? Если нет, то вам нужно будет это сделать.

Во-вторых, вы используете именованные каналы или TCP / IP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...