MS SQL SERVER, PHP, PDO, ODBC: сбой входа для пользователя

Я пытаюсь подключиться с помощью строки:

odbc:Driver={SQL Server Native Client 11.0};Server=(localdb)v11.0;Database=test;uid=sa;password=123321;

Результат: SQLSTATE [28000] SQLDriverConnect: 18456 [Microsoft] [SQL Server Native Client 11.0] [SQL Server] Ошибка входа в систему пользователя.

Когда я пытаюсь подключиться с помощью Windows ODBC Data Source Administrator, соединение будет успешным.

В чем проблема?

php,sql-server,pdo,connection,odbc,

2

Ответов: 2


4

Пользователь сети « sa » не имеет разрешения на Microsoft SQL Server.
Лучший способ предоставить пользователям сети доступ к Microsoft SQL Server - создать группу Windows ( например, EGUSERS ) и разрешить доступ к серверу Windows для доступа к учетным записям безопасности в Microsoft SQL Server.
Поместите всех пользователей сети, которым необходим доступ к Microsoft SQL Server, в группу Windows (EGUSERS).


1

Проверьте, установлен ли на сервере MSSQL правильный режим проверки подлинности: https://msdn.microsoft.com/en-us/library/ms188670.aspx

Также у вас есть два способа подключения к MSSQL через PHP / PDO с использованием расширения PHP_PDO_ODBC, которое использует драйвер ODBC, указанный в строке соединения, или использует расширение PHP_PDO_SQLSRV_xx_TS или PHP_PDO_SQLSRV_xx_NTS, которое вы можете найти здесь (только для 32-битного PHP!) Https: // www .microsoft.com / en-us / download / details.aspx? id = 20098 или воспользуйтесь неофициальным 64- битным здесь http://robsphp.blogspot.nl/2012/06/unofficial-microsoft-sql-server-driver.html

строка подключения при использовании расширения PHP_PDO_SQLSRV_xx_ (N) TS:

$hostname='127.0.0.1';
$dbname='test';
$username='user';
$password='pw';
$dbDB = new PDO("sqlsrv:Server=$hostname;Database=$dbname", $username, $password);

строка подключения при использовании расширения PHP_PDO_ODBC:

//use any of these or check exact MSSQL ODBC drivername in "ODBC Data Source Administrator"
$mssqldriver = '{SQL Server}'; 
$mssqldriver = '{SQL Server Native Client 11.0}';
$mssqldriver = '{ODBC Driver 11 for SQL Server}';

$hostname='127.0.0.1';
$dbname='test';
$username='user';
$password='pw';
$dbDB = new PDO("odbc:Driver=$mssqldriver;Server=$hostname;Database=$dbname", $username, $password);

При тестировании простого запроса, который возвратил 66 записей с использованием расширения PHP_PDO_ODBC, потребовалось ~ 500 мс (для всех трех драйверов ODBC MSSQL), но при использовании 64-битного (!) PHP_PDO_SQLSRV_TS потребовалось ~ 5000 мс. В 10 раз медленнее! Еще не пробовал 32bit или вариант NTS. Мой Dev PC - это Windows 7 SP1 с использованием WAMPx64 PHP 5.5.12, и я использовал PHP_PDO_SQLSRV_55_TS

PHP, SQL-сервер, PDO, подключение, ODBC,
Похожие вопросы