SQL Server 2005 - php5.2.8 - правильная ntwdblib.dll - Crash php.exe

slach

Новичок
SQL Server 2005 - php5.2.8 - правильная ntwdblib.dll - Crash php.exe

есть
девелоперская машина win32
на ней

php5.2.8
ntwdblib.dll от SQL 2005 сервера (версия 2000.80.194.0, мануал и комментарии к нему на http://php.net/manual/en/function.mssql-connect.php) прочитаны
локальный SQLExpress 2005

php.ini
mssql.secure_connection=Off

вот такой код прекрасно работает
<?php
$mssql = mssql_connect('.\\SQLEXPRESS','sa','sysdba') or die('mssql_connect failed '.mssql_get_last_message());
var_dump($mssql);
?>

а вот такой код выбивает php.exe в корку
при этом сниффер фиксирует трафик по 1433 порту до удаленного SQL сервера

<?php
$mssql = mssql_connect('192.168.3.251,1433','sa','sysdba') or die('mssql_connect failed '.mssql_get_last_message());
var_dump($mssql);
?>

при этом с заданными реквизитами из другого клиентского софта типа SQL Express Management Studio (а также из SQLManger.net) - все коннектится
при этом УСПЕШНО коннектится из под Linux Debian через FreeTDS, что повергает меня в еще большее недоумение...

пробовал версии ntwdblib.dll идущие в комплекте с php5.2.6 - не сработало, перестало коннектиться даже к SQLExpress2005


ВНИМАНИЕ ВОПРОСЫ :)

1) подскажите сниффер который нормально понимает SQL 2005 протокол и показывал что происходит более наглядно чем wireshark (или научите меня прикручивать анализ SQL протокола под wireshark нормальнй)
2) как правильно сделать debug backtrace ?? у меня запускается Дебагер от VS2005 но он не может подгрузить символы для ntwdblib.dll и callstack показывает, что ошибка где то в этой dll возникает
3) подскажите как диагностировать ошибку со стороны SQL Server ? может надо в какие то логи посмотреть? и т.п.?


у кого нибудь работает связка php5(win32) + SQL Server (НЕ Express) на разных серверах???

P.S.
перенос php5 на сервер где стоит SQL 2005 (полный а не express), поведение точно такое же
падает php в корку

P.P.S.
народ
http://bugs.php.net/bug.php?id=47072
проголосуйте вот за этот баг?
 

O1&g

Новичок
Re: SQL Server 2005 - php5.2.8 - правильная ntwdblib.dll - Crash php.exe

Автор оригинала: slach
у кого нибудь работает связка php5(win32) + SQL Server (НЕ Express) на разных серверах???
У меня нет, много чего перепробовал, так ни фига и не заработало, забросил.
 

zerkms

TDD infected
Команда форума
у меня работает. никогда не было проблем.
 

slach

Новичок
Автор оригинала: zerkms
у меня работает. никогда не было проблем.
хорошо
если у тебя работает
1) скажи версию php
2) скажи версию ntwdblib.dll
3) у тебя SQL Server 2005 или SQL Server 2005 EXPRESS ??
4) коннектишься по TCP/IP ? сервак сам настраивал?
5) mssql.secure_connection = off ?
 

zerkms

TDD infected
Команда форума
ой, пардон, не рассмотрел что версия sql сервера критична %) у меня 2000, отбой :)
 

O1&g

Новичок
Re: Re: SQL Server 2005 - php5.2.8 - правильная ntwdblib.dll - Crash php.exe

Автор оригинала: O1&g
У меня нет, много чего перепробовал, так ни фига и не заработало, забросил.
Вот опять задумался.

2 slach: Можешь проверить где у тебя стопор? Connection к удаленному серверу идет?
 

slach

Новичок
да все у меня идет

короче, проблема оказалась ПРОСТО решается

см. сюда
http://slach.livejournal.com/291759.html

надо версию библиотеки 2000.80.2039 и выше от MSSQL 2000 SP4

и надо у СЕРВЕРА поставить в свойстах язык по умолчанию English
и все

http://img5.imageshost.ru/imgs/0e5c0c89b3c8d5e22911df38b0cbfca4/te9108cfd74930510482fec44d429c089.png
 

O1&g

Новичок
ну язык нам точно не грозит. ;)

а вот с версиями придется играться. Интересно, а это от веб сервера зависит, а то нас IIS6
 

totamon

Новичок
для 2005 сервера используем SQL Server 2005 Driver for PHP
http://msdn.microsoft.com/en-us/library/cc296221.aspx
вроде работает...
 

slach

Новичок
tomamon
ну SQLDRV вещь хорошая
но не кросс-платформенная к сожалению
 

antonio

Moderator
Команда форума
Все было так, как описано впервом посте. С одним сервером коннект шел, сдругим был краш. Перерыл все маны, перепробовал кучу разных версий dll, ответ оказался прост! Надо было просто прописать алиас сервера на клиентском компе. Сразу же все заработало. Алиас прописывал через утилиту клиентских настроек для коннекта с MSSQL
 

slach

Новичок
Я алиас тоже пробовал, не помогло, но у меня дело было не в алиасе... а именно в языковых настройках сервера при использовании win32 клиента и ntwdblib.dll

под FreeTDS из под Linux у меня нормально вполне конектилось и конектится до сих пор ;)
 

Astral Man

We Will Rock You
Re: SQL Server 2005 - php5.2.8 - правильная ntwdblib.dll - Crash php.exe

Столкнулся с похожей проблемой.
На удаленном сервере SQL 2000 на машине с PHP стоит клиент 2005 при попытке коннекта, скрипт задумывается и вылетает по таймауту.

Проблему пока не решил
 

slach

Новичок
выкинь все лишнее из скрипта и запусти с error_reporting(E_ALL);
из под CLI режима

включи какой нибудь TCPViewer от sysinternals.com (Марк Руссинович - мракософт) или снифер типа WireShark
посмотри есть коннект или нет

SQL 2000 вообще настроен для поддержки TCP\IP ??

telnet ip_sql_2000 1433 работает?
 

Astral Man

We Will Rock You
Автор оригинала: slach
выкинь все лишнее из скрипта и запусти с error_reporting(E_ALL);
из под CLI режима

включи какой нибудь TCPViewer от sysinternals.com (Марк Руссинович - мракософт) или снифер типа WireShark
посмотри есть коннект или нет

SQL 2000 вообще настроен для поддержки TCP\IP ??

telnet ip_sql_2000 1433 работает?
Запускаю из CLI
error_reporting(E_ALL);
$conn = mssql_connect('server', 'sa', 'sa');

Выдает ошибку: Warning: mssql_connect(): Unable to connect to server...

TCPView показывает что идет подключение, и сразу же дисконнект. В статутсе пишет: SYN_SENT

По телнету соединение устанавливается нормально.

Библиотеку ntwdblib.dll использую из последнего дистрибутива PHP

-~{}~ 03.03.09 12:49:

Проблема решена обновлением ntwdblib.dll до 2000.80.2187.0

-~{}~ 03.03.09 13:42:

Ну шо за фигня....
Теперь он мне даты в таком формате выводит: Jan 11 2007 12:00AM
и к INT .0 приделывает...

mssql.datetimeconvert = Off - не работает :(
 

slach

Новичок
> Теперь он мне даты в таком формате выводит: Jan 11 2007 12:00AM

это со стороны сервера видимо настраивается

mssql.datetimeconvert вообще про часовые пояса а не про формат данных
 

Rin

*
>Проблема решена обновлением ntwdblib.dll до 2000.80.2187.0

У меня после обновления ntwdblib.dll до этой версии получилось следующее

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\Program Files\\PHP-5.2.6\\ext\\php_mssql.dll'

Придётся использовать extension=php_sqlsrv_ts.dll, но там интерфейс уже отличается
 
Сверху