Мануал по настройке PHP+MSSQL

1. Начиная с какой-то версии php 5.3.x в штатном комплекте нет php_mssql.dll.
2. Разработкой драйвера под PHP для своего SQL-сервера занимается сама MS (http://msdn.microsoft.com/en-us/library/cc296172%28SQL.90%29.aspx)
3. Поставка драйверов разнится для версий клиента к MSSQL
(http://www.microsoft.com/en-us/download/details.aspx?id=20098):
— SQLSRV30.EXE для клиента SQL Server 2012;
— SQLSRV20.EXE для клиента SQL Server 2008.
4. Самого MSSQL-клиента можно скачать порывшись здесь :
http://msdn.microsoft.com/en-us/sqlserver/ff658532.
Я ставил полностью SQLManagementStudio 2008 (в ее комплекте уже, само-собой, присутствовал и клиент),так как мне нужна была тулзовина для непосредственной работы с MSSQL.
Теперь — мои пошаговые действия.
1. Скачал и установил на машину (где apache и php) клиента SQL Server 2008 (см. п.4 выше).
2. Скачал и разархивировал SQLSRV20.EXE (см. выше п.3). Получил след список файлов:
————————————
php_pdo_sqlsrv_52_nts_vc6.dll
php_pdo_sqlsrv_52_ts_vc6.dll
php_pdo_sqlsrv_53_nts_vc6.dll
php_pdo_sqlsrv_53_nts_vc9.dll
php_pdo_sqlsrv_53_ts_vc6.dll
php_pdo_sqlsrv_53_ts_vc9.dll
php_sqlsrv_52_nts_vc6.dll
php_sqlsrv_52_ts_vc6.dll
php_sqlsrv_53_nts_vc6.dll
php_sqlsrv_53_nts_vc9.dll
php_sqlsrv_53_ts_vc6.dll
php_sqlsrv_53_ts_vc9.dll
SQLSRV_Help.chm
SQLSRV_License.rtf
SQLSRV_Readme.htm
————————————
Файлы не начинающиеся на php — меня не интересуют — это явно не драйвера :).
Файлы начинающиеся с php_pdo, пока мне тоже не интересны.
Поскольку у меня php5.3.8, рассматриваю файлы с маской «php_sqlsrv_53*». Таких файлов четыре.
Блок «ts» или «nts» обозначает, соответственно, «Thread Safety» или «Not Thread Safety».
Читаем из phpinfo() значение параметра «Thread Safety». У меня: Thread Safety = enabled.
Значит маска для имени файла драйвера сужается до «php_sqlsrv_53_ts*.dll».
Далее, из того же phpinfo() определяем каким компилятором собран наш php. В моем случае — Compiler = MSVC9(Visual C++ 2008). Т.е. окончательно имя моего драйвера: php_sqlsrv_53_ts_vc9.dll
Подкладываем его (драйвер) в php\ext, добавляем в php.ini строку extension=php_sqlsrv_53_ts_vc9.dll и перестартовываем apache. Снова читаем phpinfo(). Если все нормально, то должны обнаружить блок sqlsrv.
И, напоследок, контрольный выстрел. Собираем окончательно-проверочное мини-приложение: см. (http://msdn.microsoft.com/en-us/library/cc296161%28v=sql.90%29.aspx)
=================================
<?php

$serverName = «<имя_вашего_sql-сервера\имя_инстанции,номер_порта>»; //если instance и port стандартные, то можно не указывать
$connectionInfo = array(«UID» => «<имя_пользователя>», «PWD» => «<пароль>», «Database»=>»<имяБД>»);
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn )
{
echo «Connection established.\n»;
}
else
{
echo «Connection could not be established.\n»;
die( print_r( sqlsrv_errors(), true));
}

/* Close the connection. */
sqlsrv_close( $conn);
?>
=================================
Запускаем. Если получим «Connection established.» — радуемся! Если «Connection could not be established.» и гору сообщений об ошибках — перечитываем написанное, изучаем приведенные ссылки и пробуем, пробуем, пробуем …
Все получится!
Всем удачи!