Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS SQL SERVER、PHP、PDO、ODBC:用户登录失败_Php_Sql Server_Pdo_Connection_Odbc - Fatal编程技术网

MS SQL SERVER、PHP、PDO、ODBC:用户登录失败

MS SQL SERVER、PHP、PDO、ODBC:用户登录失败,php,sql-server,pdo,connection,odbc,Php,Sql Server,Pdo,Connection,Odbc,我正在尝试使用字符串进行连接: odbc:Driver={SQL Server Native Client 11.0};Server=(localdb)\v11.0;Database=test;uid=sa;password=123321; 结果:用户“sa”的SQLSTATE[28000]SQLDriverConnect:18456[Microsoft][SQL Server本机客户端11.0][SQL Server]登录失败 当我尝试使用Windows ODBC数据源管理员进行连接时,连接

我正在尝试使用字符串进行连接:

odbc:Driver={SQL Server Native Client 11.0};Server=(localdb)\v11.0;Database=test;uid=sa;password=123321;
结果:用户“sa”的SQLSTATE[28000]SQLDriverConnect:18456[Microsoft][SQL Server本机客户端11.0][SQL Server]登录失败

当我尝试使用Windows ODBC数据源管理员进行连接时,连接成功


可能存在什么问题?

网络用户“sa”没有访问Microsoft SQL Server的权限。
为网络用户提供Microsoft SQL Server访问权限的最佳方法是创建一个Windows组(例如EGUSERS),并允许Windows组服务器在Microsoft SQL Server内的安全登录处进行访问。

将需要访问Microsoft SQL Server的所有网络用户放入Windows组(EGUSERS)。

检查是否在MSSQL Server上设置了正确的身份验证模式:

还有两种方法可以通过PHP/PDO连接到MSSQL,即使用PHP_PDO_ODBC扩展(使用connectionstring中给出的ODBC驱动程序),或者使用PHP_PDO_SQLSRV_xx_TS或PHP_PDO_SQLSRV_xx_NTS扩展(仅适用于32位PHP!),或者使用非官方的64位扩展

使用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);
//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);
使用PHP_PDO_ODBC扩展时的连接字符串:

$hostname='127.0.0.1';
$dbname='test';
$username='user';
$password='pw';
$dbDB = new PDO("sqlsrv:Server=$hostname;Database=$dbname", $username, $password);
//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);
当测试一个使用PHP_PDO_ODBC扩展返回66条记录的简单查询时,需要约500毫秒(对于所有三个MSSQL ODBC驱动程序),但当使用64位(!)PHP_PDO_SQLSRV_时,需要约5000毫秒。慢10倍!尚未尝试32位或NTS变体。
我的开发PC是使用WAMPx64 PHP 5.5.12的Windows 7 SP1,我在相关说明中使用了PHP_PDO_SQLSRV_55_TS

,您似乎在使用Windows,因此该扩展也提供了一个新的功能,可能是ODBC的有趣替代品。我尝试过,但它甚至找不到实例(localdb)\v11.0或我使用cmd/sqllocaldb命令创建的实例显示连接字符串应类似于使用windows组?或如何使用windows身份验证通过ODBC进行连接?请参阅教程。如您所见,我没有使用ASP
telnet 127.0.0.1 1433
或使用工具(osql、sqlcms等)