Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Windows+php+mssql 2008 R2 / 9 сообщений из 9, страница 1 из 1
25.03.2014, 15:21
    #38595851
s_vist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
Тема, возможно избитая, но пока не могу побороть.
Есть связка Windows 8, на которой поставлен Wamp 32-bit(с php 5.3.13), и сервер MSSQL 2008 R2. На этой же машине поставлен MSSQL native client 10.0 и добавлено расширение php_sqlsrv_53_ts_vc9.dll.
Тестим подключение к ms sql следующим скриптом:
<?php

function FormatErrors( $errors )
{
echo "Error information:
";

foreach ( $errors as $error )
{
echo "SQLSTATE: ".$error['SQLSTATE']."
";
echo "Code: ".$error['code']."
";
echo "Message: ".$error['message']."
";
}
}

$serverName = " 10.1.1.232";
$connectionInfo = array( "Database"=>"test", "UID"=>"sa", "PWD"=>"sapassword");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{ die( FormatErrors(sqlsrv_errors()) ); }

var_dump($conn);
?>

На что получаем сообщение об ошибке
Error information: SQLSTATE: 08001 Code: 10061 Message: [Microsoft][SQL Server Native Client 10.0]TCP Provider: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. SQLSTATE: HYT00 Code: 0 Message: [Microsoft][SQL Server Native Client 10.0]Login timeout expired SQLSTATE: 08001 Code: 10061 Message: [Microsoft][SQL Server Native Client 10.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.

Отмечу, что брандмауэр выключен и на сервере, и на клиенте. Я пробовал в имени сервера добавлять имя экземпляра "10.1.1.232\testsql", на что получал другую ошибку:
Error information: SQLSTATE: 08001 Code: 11001 Message: [Microsoft][SQL Server Native Client 10.0]TCP Provider: Этот хост неизвестен.

Пробовал указывать порт 1433 вручную - никаких изменений. Еще отмечу, что удаленные соединения на сервер разрешены, я могу подключиться с Management Studio, установленной на клиенте, а так же из командной строки с указанием именованного экземпляра:
sqlcmd -S 10.1.1.232\testsql -U sa -P sapassword

В сторону чего еще можно копать?
...
Рейтинг: 0 / 0
25.03.2014, 16:02
    #38595941
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
$serverName = " 10.1.1.232\testsql";

а если так?
...
Рейтинг: 0 / 0
25.03.2014, 16:09
    #38595954
s_vist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
ScareCrow,
Я так тоже пробовал
Ошибка такая
Error information: SQLSTATE: 08001 Code: 11001 Message: [Microsoft][SQL Server Native Client 10.0]TCP Provider: Этот хост неизвестен.
...
Рейтинг: 0 / 0
25.03.2014, 16:23
    #38595990
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
а localhost?
...
Рейтинг: 0 / 0
25.03.2014, 17:25
    #38596105
s_vist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
ScareCrow,

ну у меня sql сервер и веб-сервер на разных машинах, но если я прописываю имя хоста, то результат все тот же ,что и с ip-адресом
...
Рейтинг: 0 / 0
25.03.2014, 18:44
    #38596228
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
если там апач или что рарегистрирован как сервис, посмотрите что он не от Local System

ну или попробуйте через php-cli запустить.
...
Рейтинг: 0 / 0
28.03.2014, 12:20
    #38599000
s_vist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
Апач настроил на запуск от Network Service - ничего не изменилось
Запустил скрипт через php-cli - и та же самая ошибка, что и через веб. Самое интересное, что когда-то вся эта связка(Windows 8 + WAMP + MSSQL 2008 R2) у меня работала.
...
Рейтинг: 0 / 0
31.03.2014, 12:50
    #38600701
s_vist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
Как оказалось, проблема на стороне конкретного сервера SQL. Подключение через данный скрипт у другому серверу заработало сразу же, как заработало и подключение к нему же через драйвер pdo_mssql. В чем именно проблема SQL сервера, пока непонятно.
...
Рейтинг: 0 / 0
01.04.2014, 11:36
    #38601687
s_vist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows+php+mssql 2008 R2
Нашлась и причина, и решение.
Когда я проверял коннект к серверу при помощи sqlcmd, то обращался к серверу с указанием именованного экземпляра, т.е. на порт 1434, который слушает служба SQL Browser.
Я не знаю почему, но драйвер php sqlsrv плохо относится к именованным экземплярам, и многие источники рекомендуют в строке подключения указывать только адрес, без указания именованного экземпляра. В таком случае соединение происходит по порту 1433.
вот тут оказалось, что недостаточно было, чтобы этот порт был указан как tcp-порт для ip-адресов 127.0.0.1 и адреса ethernet-интерфейса. В конфигурации сервера(Диспетчер конфигурации - Сетевая конфигурация SQL сервер - протоколы для <имя экземпляра> - TCP-IP - IP-адреса) есть группа параметров IPAll, вот там тоже надо было указать порт (1433), чтобы соединения на порт 1433 заработали.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Windows+php+mssql 2008 R2 / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]