Я пытаюсь подключиться к базе данных SQL Server с PHP, но у меня возникают проблемы со строкой подключения. Вот краткое изложение того, что я пробовал, и эффект, который он имел:Подключение к серверу MS SQL из PHP
Запуск PHP 5.3.13, Apache 2.2.22, Windows 7 и SQL Server 2008 R2
Я установил SQL Server Собственный клиент 11.0
Я отказался от использования драйвера MSSQL, вместо этого использовал драйвер SQLSRV.
Loaded эти расширения в php.ini: расширение = php_pdo_sqlsrv_53_ts.dll, расширение = php_sqlsrv_53_ts.dll, расширение = php_pdo.dll.
phpinfo() показывает их как активные:
Registered PHP Streams php, file, glob, data, http, ftp, zip, compress.zlib, phar, sqlsrv
PDO drivers mysql, odbc, sqlite, sqlsrv
sqlsrv support enabled
код подключения выглядит следующим образом:
$serverName = "[servername]";
$connectionInfo = array("Database"=>"[databasename]");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn)
{
echo "Connection established.\n";
}
else
{
echo "Connection could not be established.\n";
die(print_r(sqlsrv_errors(), true));
}
Строка настроена на использование проверки подлинности Windows, какие sqlsrv_errors() отчеты:
[message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed for user '[networkname]\[machinename]'
Я также пробовал это, используя свой идентификатор сети/pwd, в результате чего
[message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed for user '[username]'
Я знаю, что база данных работает и работает, так как я могу подключать и запускать запросы без проблем с клиента SQL Server и из sqlcmd. Клиент SQL и командная строка работают при использовании моих учетных данных сети/машины. Клиент командной строки не работает, когда я пытаюсь использовать имя пользователя/пароль. Это указывает на то, что любое соединение с PHP должно использовать аутентификацию Windows для подключения.
Кто-то из другого потока предложил, чтобы изменения разрешений в записи реестра работали, но это не помогло моей проблеме. PHP 5.3 not recognizing Native Client to connect to MS SQL
У меня также был некоторый успех при создании системы DSN. Протоколы испытаний соединение успех:
Microsoft SQL Server Native Client Version 11.00.2100
Running connectivity tests...
Attempting connection
Connection established
Verifying option settings
INFO: A network alias was found for the DSN server. 'Protocol: DBMSSOCN; Address: [servername]' was used to establish the connection.
Disconnecting from server
TESTS COMPLETED SUCCESSFULLY!
Я искал обширно в stackoverflow.com и межсетях вообще не повезло. Очевидно, что соединение db доступно с помощью других методов, но что происходит в моей связи через PHP?