【发布时间】:2012-06-20 18:54:29
【问题描述】:
我正在尝试使用 PHP(在 IIS 中)连接到 Microsoft SQL 服务器数据库。代码中提供的user/pass是AD账号,可以在Access中通过ODBC访问数据库就好了。
$serverName = "servername";
$connectionInfo = array( "Database"=>"dbname", "UID"=>"myuser", "PWD"=>"mypass");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br /><pre>";
die( print_r( sqlsrv_errors(), true));
}
用户名和密码有效,服务器名称和数据库名称也是有效的。但这是返回错误:
[Microsoft][SQL Server Native Client 10.0][SQL Server]用户“myuser”登录失败。
对于用户名(这是 AD 中的有效用户,我可以使用 Access 连接/链接到该数据库)我也尝试过:
- DOMAIN.ORG\myuser
- DOMAIN.ORG\\myuser
- myuser@DOMAIN.ORG
我的域用户 (myuser) 通过 AD 拥有该服务器的管理员权限。但这会返回相同的 Login failed 错误。有什么我想念的吗?我可以毫无问题地使用 Access 连接到同一个数据库(在同一个用户下)。
我在 Access 中连接的方式是本地用户的 ODBC 数据源。数据源设置为“通过使用网络登录 ID 的 Windows NT 身份验证”进行身份验证。我怎样才能在 PHP 中做到这一点?
this impersonation configuration是可能的原因吗?
PHP在用户nt authority\iusr下运行
如果它尝试使用iusr 登录,错误消息不会这样说吗?
我尝试在这台机器上创建一个名为“TestDS”的数据源并使用代码:
$conn = odbc_connect("TestDS", "", "");
但这给了我:
指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配,SQLConnect 中的 SQL 状态 IM014
Machine1 是一个客户端试图访问一个网页(PHP 代码在 Machine2 上),Machine2 上的代码正在与 Machine3 建立 SQL 连接 (servername)。
【问题讨论】:
标签: php sql-server iis active-directory