Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > sql2008, как к нему добраться ?


Автор: SharedNoob 6.10.2008, 13:25
Доброго времени суток, господа.
Собственно задача проста, получить доступ к MS SQL 2008 из пхп. Стандартные драйвера, которые работают на MSSQL2000 не работают. Пробовал извратнуться с двумя серверами, 2000 и 2008 через linkedservers, доступ к данным получил, а вот выполнять хранимые процедуры таким образом нельзя. 

п.с.
SQL сервер и WEB сервер стоят физически на одной машине.

Автор: SharedNoob 8.10.2008, 19:31
То есть никак ?
p.s.
не верю !

Автор: skyboy 8.10.2008, 20:08
скорее всего, это означает то, что никто из находящихся на форуме не пытался использовать такую связку. соответственно, не наступал на грабли неработоспособности. и не знает ответа на вопрос "что же делать?"
если посмотреть в ман, то можно увидеть такое:
Цитата

The extension requires the MS SQL Client Tools to be installed on the system where PHP is installed. The Client Tools can be installed from the MS SQL Server CD or by copying ntwdblib.dll from \winnt\system32 on the server to \winnt\system32 on the PHP box. Copying ntwdblib.dll will only provide access through named pipes. Configuration of the client will require installation of all the tools. 

Откуда возникает вопрос: установлены ли Client Tools и/или  скопирована ли необходимая dll актуальной версии сервера в папку, где её может найти PHP? Точно ли происходит попытка подключения через named pipes и настроена ли работа через эти самые named pipes?

Автор: SharedNoob 8.10.2008, 22:02
Итак, Господа, отвечаю на поставленный мною вопрос.
В SQL 2005-2008 немного изменился алгоритм авторизации. Соответственно стандартные драйвера этого не знают и подключение не проходит. Докопавшись до сути происходящего, я нашел что за это дело отвечает библиотека ntwdblib.DLL . Чем я собственно и воспользовался, взяв эту библиотеку из SQL server 2008 и подменил одноименную в апаче. Результатом стало вознаграждение долговременного поиска решения проблемы. Теперь я беспроблемно подключаюсь к люсой версии SQL сервера. 

п.с.
файл ntwdblib.dll должен быть версии не ниже 2000.80.2039.0, размер библиотеки этой версии 290 816 байт. 

п.п.с.
Пример кода применения:
Код

    $SQL_dbhost = "127.0.0.1,1828";
    $SQL_dbuser = "login";
    $SQL_dbpasswd = "password";
    $SQL_dbname = "DATA_BASE";

    
    $msconnect=mssql_connect($SQL_dbhost,$SQL_dbuser,$SQL_dbpasswd);
    $msdb=mssql_select_db($SQL_dbname,$msconnect);

    $query = "select convert(varchar(20),getdate(),104)";
    $sql = @mssql_query($query);
    $DW = @mssql_result($sql,0,0);

        Echo "Текущая дата: ".$DW;



п.п.п.с.
Решил таки прикрепить саму библиотеку ntwdblib.dll к ответу, вдруг кому пригодиться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)