0

Я пытаюсь подключиться к базе данных 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?

ответ

0

Я решил это, создав новый логин, используя аутентификацию сервера SQL. Надеюсь, это поможет кому-то с подобными проблемами.

0

SQLSRV использует отсутствие идентификатора UID (uid==NULL || strlen(uid) ==0), чтобы указать, что он должен попытаться установить флаг «доверенное соединение» в строке подключения, т. Е. Подключиться с использованием учетных данных, подразумеваемых контекстом выполнения.

Вы не можете передать логин и пароль домена (например, UID='MYDOMAIN\user') явно.

0

У меня был вопрос странно версия компилятора с драйверами от Microsoft для PHP, и решить мою проблему соединения с драйвером ODBC в РНР:

//$pdo = new PDO("sqlsrv:Server=$hostname;Database=$dbname;", $username, $password); // works with proper driver for PHP. 
$pdo = new PDO("odbc:Driver={SQL Server};Server=$hostname;Database=$dbname;", $username, $password); // works with proper driver for ODBC and PHP ODBC.