Проблемы с подключением к Microsoft SQL Server Express (2008) из PHP

Как следует из названия, у меня проблемы с подключением к MSSQL из PHP-скрипта.

Установка: -

  • PHP работает на сервере Apache Linux.
  • Microsoft SQL Server 2008 находится на компьютере с XP.
  • У меня включены удаленные подключения на сервере MSSQL.
  • База данных bggs существует.
  • База данных работает (я вижу зеленую стрелку).
  • У меня нет брандмауэра на машине XP.

Если у вас есть какие-либо вопросы по отладке, не стесняйтесь спрашивать.

Я использую следующий тестовый сценарий.

<?php
    include('adodb5/adodb.inc.php');
    $db =& ADONewConnection('odbc_mssql');
    $db->debug = true;
    $dsn = "Driver={SQL Server};Server=ozmodiar;Database=bggs;";
    $db->Connect($dsn,'user','password');
    $rs = $db->Execute('select * from admin_users');
    print "<pre>";
    print_r($rs->GetRows());
    print "</pre>";
?>

Получение следующего результата.

Предупреждение: odbc_connect() [function.odbc-connect]: ошибка SQL: [unixODBC][Диспетчер драйверов]Имя источника данных не найдено, и драйвер по умолчанию не указан, состояние SQL IM002 в SQLConnect в /mnt/filestore/vhost/bggs/ hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php в строке 60 (odbc_mssql): SET CONCAT_NULL_YIELDS_NULL OFF
Предупреждение: odbc_exec(): указанный аргумент не является допустимым ресурсом ODBC-Link в /mnt/ filestore/vhost/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php в строке 530 IM002: [unixODBC][Диспетчер драйверов]Имя источника данных не найдено, и не указан драйвер по умолчанию

ADOConnection._Execute(SET CONCAT_NULL_YIELDS_NULL OFF, false) % строка 1017, файл: adodb.inc.php ADOConnection.Execute(SET CONCAT_NULL_YIELDS_NULL OFF) % строка 62, файл: adodb-odbc.inc.php ADODB_odbc._connect(Driver={SQL Сервер}; Сервер = 192.168.70.130; База данных = bggs;, sa, knd121, ) % строка 524, файл: adodb.inc.php ADOConnection.Connect (Драйвер = {SQL Server}; Сервер = 192.168.70.130; База данных = bggs ;,sa,knd121)% строка 9, файл: test_db.php

Driver={SQL Server};Server=192.168.70.130;Database=bggs;: [unixODBC][Диспетчер драйверов]Имя источника данных не найдено, и не указан драйвер по умолчанию (odbc_mssql): выберите * из admin_users
Предупреждение: odbc_exec (): предоставленный аргумент не является допустимым ресурсом ODBC-Link в /mnt/filestore/vhost/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php в строке 530 IM002: [unixODBC][Driver Диспетчер]Имя источника данных не найдено, и драйвер по умолчанию не указан

ADOConnection._Execute(выбрать * из admin_users, false) % строка 1017, файл: adodb.inc.php ADOConnection.Execute(выбрать * из admin_users) % строка 10, файл: test_db.php

Неустранимая ошибка: вызов функции-члена GetRows() для не-объекта в /mnt/filestore/vhost/bggs/hr_database/Dev/includes/test_db.php в строке 12.


person Community    schedule 06.02.2009    source источник


Ответы (1)


Отказ от ответственности: я запрашивал данные только из Microsoft SQL Server 2000, но через PDO_DBLIB, хотя я уверен, что обязательным условием является наличие драйверов freetds для ADODB или PDO_DBLIB.

Судя по начальному сообщению об ошибке, у вас не установлены необходимые драйвера. Чтобы ваше приложение могло получить доступ к серверу, вам нужно будет установить freetds, который установит необходимые драйверы и позволит настроить соединения ODBC. Проверьте: http://www.linuxjournal.com/article/6636

Важно отметить, что вам необходимо правильно установить «tds version = x.x» в глобальной конфигурации freetds или конкретном соединении OBDC (/etc/freetds/freetds.conf по умолчанию в Debian), иначе протокол, который freedtds использует на вашем сервере, не будет правильно и скрипт будет бомба.

person chuckg    schedule 06.02.2009
comment
Я следил за этой статьей, но теперь я застрял на этой ошибке: tsql -S OZMODIAR -U bggs Пароль: Msg 20009, уровень 9, состояние -1, сервер OpenClient, строка -1 Невозможно подключиться: Adaptive Server недоступен или не существует Возникла проблема с подключением к серверу Спасибо! - person ; 11.02.2009