@NataliaCh

В чем ошибка при попытке соединиться с MS SQL через PDO_SQLSRV?

Нужно настроить вебсервер на соединение с базой данных MS SQL.
Среда: Windows NT 6.0, IIS 8.0, PHP 7.0.1
Сделала всё по инструкции. Установила php драйвер, скаченный с сайта микрософт ( php_pdo_sqlsrv_7_nts_x64.dll), вписала расширение в php.ini. Обновила сервер, в phpinfo появилась запись pdo_sqlsrv.
Запустила скрипт соединения с БД
$serverName = "имя сервера";   
$database = "имя базы";  
$uid = "имя пользователя";
$pwd = "пароль";

$conn = new PDO( "sqlsrv:server=$serverName;database=$database", $uid, $pwd);

Выдалась ошибка:
PHP Fatal error: Uncaught PDOException: SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server.
Установили ODBC Driver 11.
Снова запуск скрипта и ошибка:
SQLSTATE[28000]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Ошибка входа пользователя "имя пользователя"
Учетка рабочая. Через нее без проблем соединяюсь с БД через ssms.
Причем браузер почему-то не всегда выдает именно эту ошибку. Чаще так:
PHP Fatal error: Invalid handle returned
Не понятно что-то не так с учеткой или с настройками сервера? Учетка, к слову, составная: ИМЯ_ЛОКАЛЬНОЙ_СЕТИ\имя_пользователя. Может из-за этого слеша какие-то проблемы?
Помогите, плиз, разобраться.
  • Вопрос задан
  • 2373 просмотра
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
ИМЯ_ЛОКАЛЬНОЙ_СЕТИ\имя_пользователя


win авторизация подразумевает пользователя как имя_домена/имя_пользователя_в_домене или же имя_компьютера/имя_пользователя_на_компьютере

ну и сервер бд желательно указывать полностью как сервер[.домен]/инстанс

как правило MS предпочитает обратный слэш "\", но и прямые принимает.

а вот в $uid - я бы посмотрел - не лежит ли там вместо "server\mmm" нечто типа "server<перевод каретки>mm"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы