Подключение к SQL Server 2008 через PHP
мне нужно подключиться к SQL Server 2008 через PHP (WAMP, последняя версия). У меня установлены и настроены драйверы sqlsrv, и они появляются в phpinfo()
.
Я использую следующие строки для подключения к моей БД, используя аутентификацию Windows:
$serverName = "(local)";
$connectionOptions = array("Database"=>"MyTestDatabase");
$conn = sqlsrv_connect( $serverName, $connectionOptions) or die("Error!");
и я получаю следующую ошибку:
Array
(
[0] => Array
(
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -49
[code] => -49
[2] => This extension requires the Microsoft SQL Server 2011 Native Client. Access the following URL to download the Microsoft SQL Server 2011 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712
[message] => This extension requires the Microsoft SQL Server 2011 Native Client. Access the following URL to download the Microsoft SQL Server 2011 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712
)
[1] => Array
(
[0] => IM002
[SQLSTATE] => IM002
[1] => 0
[code] => 0
[2] => [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
[message] => [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
)
)
любая помощь была бы отличной, но, пожалуйста, будьте конкретны, так как я действительно не знаю свой путь вокруг WAMP, за исключением нескольких основ.
3 ответов
ошибка вызвана проблемой разрешения в реестре. Существует ключ, в котором хранится путь к родному клиенту, а удостоверение, используемое в пуле приложений, получает отказ в доступе.
- скачать Process Monitor и следуйте инструкциям на этом посту: http://www.iislogs.com/articles/processmonitorw3wp/ (в этом уроке показано, как это сделать на IIS, с WAMP вам нужно будет найти.exe процесс, который работает на память)
-
найти раздел реестра, где процесс
w3wp.exe
отказано в доступе. Что в случае IIS, не уверен, каково имя процесса в WAMP, но процедура такая же. В моем случае:HKLM\Software\ODBC\ODBCINST.INI\SQL Native Client 10.0
- запустите regedit и найдите ключ
- щелкните правой кнопкой мыши и перейдите к разрешениям
- добавить сетевой сервис в список и дать ему права на чтение.
- утилизация пула приложений, и он должен работать
sqlsrv_connect PHP руководство
попробуйте этот подход, чтобы увидеть, что ошибка на самом деле:
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
} else {
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
на основе вашей настройки вам может потребоваться вернуться к mssql_connect
и соответствующих функций. Это отлично работает с mssql 2008, и вы обычно не теряете значимую функциональность.
вот пример настройки подключения к базе данных. В зависимости от конфигурации вы можете добавить информацию о порте и т. д.
$hostname = "server.domain.com";
$database = "DatabaseName";
$username = "LocalSQLUserName";
$password = "P@ssw0rd";
$Connection = mssql_connect($hostname, $username, $password);
если вы работаете в среде XAMP, то было бы разумно, что вы используете все локально. Если это случай, ваш сервер будет localhost
или 127.0.0.1
и вы можете определить свои собственные учетные записи в SQL. Как я уже сказал, Я сам не использую учетные записи Windows, но вы можете добавить учетную запись NT на свой "сервер", а затем в SQL Server Management tool установить, что пользователь имеет доступ к используемой БД. Затем вы установили учетную запись и пароль и знаете, что они собой представляют. Если у вас возникли проблемы с учетной записью пользователя, вы можете попробовать computerName\userName
.
если вы не являетесь администратором, вам нужно будет получить соответствующий информация от них.