3

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

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]用户“sa”登录失败。

当我尝试使用 Windows ODBC 数据源管理器连接时,连接成功。

问题可能出在什么地方?

4

2 回答 2

4

网络用户“ sa ”没有访问 Microsoft SQL Server 的权限。
为网络用户提供对 Microsoft SQL Server 的访问权限的最佳方式是创建一个 Windows 组(例如 EGUSERS)并在 Microsoft SQL Server 的安全登录处允许 Windows 组服务器访问。
将所有需要访问 Microsoft SQL Server 的网络用户放入 Windows 组 (EGUSERS)。

于 2013-02-19T08:41:21.243 回答
1

检查您是否在 MSSQL Server 上设置了正确的身份验证模式: https ://msdn.microsoft.com/en-us/library/ms188670.aspx

此外,您还有两种方法可以通过 PHP/PDO 连接到 MSSQL,方法是使用 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);

当测试一个使用 PHP_PDO_ODBC 扩展返回 66 条记录的简单查询时,大约需要 500 毫秒(对于所有三个 MSSQL ODBC 驱动程序),但在使用 64 位(!)PHP_PDO_SQLSRV_TS 时需要大约 5000 毫秒。慢了10倍!尚未尝试 32 位或 NTS 变体。我的开发 PC 是使用 WAMPx64 PHP 5.5.12 的 Windows 7 SP1,我使用了 PHP_PDO_SQLSRV_55_TS

于 2015-06-28T22:20:29.003 回答