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 Data Source Administrator を使用して接続しようとすると、接続は成功します。

問題は何ですか?

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 に接続するには、接続文字列で指定された ODBC ドライバーを使用する PHP_PDO_ODBC 拡張機能を使用する方法と、ここで見つけることができる PHP_PDO_SQLSRV_xx_TS または PHP_PDO_SQLSRV_xx_NTS 拡張機能を使用する方法の 2 つがあります (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 レコードを返す単純なクエリをテストすると、(3 つの MSSQL ODBC ドライバーすべてで) ~500ms かかりましたが、64 ビット (!) PHP_PDO_SQLSRV_TS を使用すると ~5000ms かかりました。10倍遅い!32 ビットまたは NTS バリアントはまだ試していません。私の開発用 PC は、WAMPx64 PHP 5.5.12 を使用する Windows 7 SP1 で、PHP_PDO_SQLSRV_55_TS を使用しました。

于 2015-06-28T22:20:29.003 に答える