我正在尝试使用 PHP(在 IIS 中)连接到 Microsoft SQL 服务器数据库。代码中提供的用户/通行证是一个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 中做到这一点?
这种模拟配置是可能的原因吗?
PHP在用户下运行nt authority\iusr
如果它试图使用登录iusr
,错误消息不会这样说吗?
我尝试在这台名为“TestDS”的机器上创建一个数据源并使用代码:
$conn = odbc_connect("TestDS", "", "");
但这给了我:
指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配,SQLConnect 中的 SQL 状态 IM014
Machine1 是一个试图访问网页的客户端(PHP 代码在 Machine2 上),Machine2 上的代码正在与 Machine3 建立 SQL 连接 ( servername
)。