簡體   English   中英

MS SQL SERVER,PHP,PDO,ODBC:用戶登錄失敗

[英]MS SQL SERVER, PHP, PDO, ODBC: Login failed for user

我正在嘗試使用字符串進行連接:

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數據源管理器進行連接時,連接成功。

可能是什么問題?

網絡用戶“ sa ”沒有訪問Microsoft SQL Server的權限。
為網絡用戶提供訪問Microsoft SQL Server的最佳方法是創建Windows組( 例如EGUSERS ),並在Microsoft SQL Server的“安全登錄名”上允許Windows組“服務器訪問”。
將所有需要訪問Microsoft SQL Server的網絡用戶放入Windows組(EGUSERS)。

檢查是否在MSSQL Server上設置了正確的身份驗證模式: https : //msdn.microsoft.com/zh-cn/library/ms188670.aspx

另外,您還有兩種方法可以通過使用PHP_PDO_ODBC擴展名通過PHP / PDO連接到MSSQL,該擴展名使用在連接字符串中給定的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驅動程序),但是當使用64bit(!)PHP_PDO_SQLSRV_TS時,則需要大約5000毫秒。 慢10倍! 尚未嘗試過32bit或NTS變體。 我的開發PC是使用WAMPx64 PHP 5.5.12的Windows 7 SP1,我使用了PHP_PDO_SQLSRV_55_TS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM