Как настроить подключение к MS SQL через ODBC?

В этой статье вы узнаете:
  • Что такое ODBC;
  • Как создать имя источника базы данных (DSN, Database Source Name);
  • Как подключаться к ODBC из PHP.

Настраивать будем под операционную систему Windows 7 с примерами кода на языке программирования PHP.
Для тестирования подключения к MS SQL серверу я создал аккаунт на хостинге gearhost.

Что такое ODBC

ODBC (Open Database Connectivity, открытый механизм взаимодействия с базами данных) —  это программный интерфейс (API) доступа к базам данных, разработанный фирмой Microsoft.

С помощью ODBC, программы могут подключаться к различным СУБД (MySQL, Microsoft SQL Server, SQLite, MongoDB и другие) и выполнять SQL-запросы.

Как создать имя источника базы данных (DSN)

Имя источника базы данных указывается в функции подключения ODBC.
Например, в PHP эта функция называется odbc_connect().

Итак, начнем.

1. Нажимаем «Пуск»
2. Заходим в «Панель управления»
3. Ищем пункт «Администрирование»
Если вы не видите этого пункта, то переключите «Просмотр» из режима «Категория» в режим «Мелкие значки» или «Крупные значки».


4. Нажимаем на ссылку «Источник данных (ODBC)»
5. Открываем вкладку «Пользовательский DSN»
6. Нажимаем «Добавить»


7. Из списка драйверов выбираем «SQL Server»


8. Указываем «Имя» источника данных. Имя может быть любым, но я рекомендую использовать имя сервера, в моем случае это «mssql4.gear.host»


9. В поле «Сервер» нужно указать имя сервера, у меня это значение такое же как «Имя» - «mssql4.gear.host»
10. Указываем «проверка подлинности учетной записи SQL Server»
11. Устанавливаем флажок «Получить параметры, используемые по умолчанию, от SQL Server.»
12. Заполняем поля «Пользователь» и «Пароль».


13. Нажимаем кнопку «Далее»


14. Нажимаем кнопку «Готово»


15. Нажимаем кнопку «Проверить источник данных», чтобы убедиться, что указанные данные верны.


16. Готово, мы создали имя источника базы данных (DSN) и теперь мы можем использовать его в своих программах.


Как подключаться к ODBC из PHP

Убедитесь, что в php.ini раскомментирована строка:
extension=php_odbc.dll

Подключаться будем с помощью функции odbc_connect().

Есть 2 способа подключения:
1. Указать имя источника базы данных (DSN)
// mssql4.gear.host - это и есть имя источника базы данных (DSN)
$connection = odbc_connect('mssql4.gear.host', 'mssql86', 'password');

2. Указать имя драйвера
Имя драйвера мы указывали в пункте 7 — «SQL Server»
// «{SQL Server}» - здесь ошибки нет, именно так и нужно указывать
$connection = odbc_connect('Driver={SQL Server};Server=mssql4.gear.host;Database=mssql86', 'mssql86', 'password');

В завершении, давайте попробуем получить данные из MS SQL сервера через ODBC-подключение
<?php
$connection = odbc_connect('mssql4.gear.host', 'mssql86', 'password');

$result = odbc_exec($connection, 'SELECT * FROM test');

$array = odbc_fetch_array($result);

var_dump($array);

/*

Вывод:
array(1) { ["id"]=> string(3) "101" } 

В таблице «test» была одна колонка «id» с одной записью «101»

*/