2012-01-04 5 views
1

У меня есть компьютер, A, с программой PHP, которая соединяет и управляет БД на компьютере B1. Для подключения к серверу MS SQL я использую следующий сценарий, который хорошо работает. На этом SQL-сервере есть только одна учетная запись, и она «sa».Ошибка входа для пользователя '

$server = 'WAREHOUSE1\MYDB';

$connectionInfo = array("UID" => "sa", "PWD" => "something", "Database"=>"MYDB");

$dbcMssql = sqlsrv_connect($server, $connectionInfo);

Мы получили новый компьютер, B2, чтобы заменить этот компьютер, потому что он был стар и медленно. Я настроил новую БД и восстановил ее с B1, настроил параметры брандмауэра, как в B1, проверил «разрешить удаленное соединение» и выбрал «SQL Swrver и Windows Auth. Mode» в MS SQL Server Management Studio и т. Д. Я возможность подключения к БД на компьютерах B1 и B2 с компьютера A с использованием MS SQL Server Management Studio. Я даже связал таблицы с MS Access (база данных OBDC), используя один и тот же идентификатор пользователя («sa») и пароль.

Проблема в том, что на новом компьютере B2 мой PHP-скрипт больше не работает, хотя я могу подключиться к нему с помощью программы MS SQL. Я не помню, как настраивал что-то другое, кроме того, что я уже делал, когда настраивал B1. Ошибка следующая: sqlsrv_errors().

[SQLSTATE] => 28000

[code] => 18456

[message] => [Microsoft][SQL Server Native Client 10.0][SQL Server]Login failed for user 'sa'.

Ошибка не регистрируется по какой-либо причине в файле ERRORLOG на серверную папку какой-то причине, так что я не знаю, что от состояния ошибка. Что может быть проблемой? Я прочитал несколько статей весь этот день, но я не могу сделать эту работу! Опять же, соединение с B1 от A прекрасно, и это заставляет меня поверить, что я не установил что-то на B2. B1 и B2 имеют одинаковые версии SQL-серверов.

+0

Является ли MYDB именем экземпляра или именем базы данных? Кроме того, вы не должны использовать 'sa' для этого; Создайте новый аккаунт. Убедитесь, что сервер базы данных принимает аутентификацию в смешанном режиме на http://msdn.microsoft.com/en-us/library/ms144284.aspx –

+0

Я бы поставил 100 долларов США за то, что пароль для 'sa' is ...' sa' ;) – Jakub

+0

@Jeremy Holovacs: MYBD - это имя экземпляра и имя базы данных (это не одно и то же?). Я проверил вашу ссылку, но Win7 Home не имеет secpol.msc .. не достаточно ли иметь смешанный режим проверки подлинности, установленный на SQL-сервере, хотя, как я описал в OP? – musicliftsme

ответ

1

IRC протокол TCP/IP отключен установкой по умолчанию по умолчанию. Вам нужно перейти в конфигурацию SQL Server и включить его оттуда.

Редактировать: Хорошо, просто прочитайте его снова, и если вы можете подключиться удаленно через TCP/IP, то он также должен работать с вашим PHP-скриптом. Вы уверены, что строка подключения заканчивается, указывая на правый (B2?) Сервер? Это может быть проблема с разрешением имен?

+0

Есть ли другой способ проверки/настройки протокола TCP/IP вместо использования конфигурации SQL Server? Когда я открываю Диспетчер конфигурации, экземпляр «MYDB» по какой-либо причине не указан ни на установке B1, ни на В2. Он показывает другие БД на компьютерах, но не MYDB. – musicliftsme

+0

Откройте диспетчер конфигурации сервера Sql. В разделе «Конфигурация сети SQL Server» вы должны иметь «Протоколы для MYDB». Не могу себе представить, как это сделать. Это могут быть какие-то права доступа? Чтобы убедиться, что SQL Server Conf должен быть запущен как Admin – Radu094

+0

Я также попробовал «запустить как admin», и он все еще не существует в SQL Server Config. Менеджер (локальный) -> Сетевая конфигурация SQL Server 2005. Я вижу только «Протоколы для UPSxxx», который является БД для программы ИБП. Это могут быть какие-то проблемы с версией экземпляра MYDB? У меня такое чувство, что это проблема разрешения ... но я зарегистрирован в Win7 как администратор. – musicliftsme