Linux php 连接到运行 MS SQL Server Express 的 Server 2008


linux php connect to Server 2008 running MS SQL Server Express

我可以使用以下凭据从客户端PC连接到SQL Server Express。

server: 192.168.44.96'sqldb
auth: windows auth
user name: domain'user
pw: 1234!

有一个 LAMP 服务器尝试连接到上面的 SQL 服务器,PHP 如下所示:

$server = '192.168.44.96'sqldb';
$username = 'domain'user';
$password = '1234!';
$database = 'testing123';
$connection = mssql_connect($server, $username, $password);
if($connection != FALSE){
    echo "Connected to the database server OK<br />";
}
else {
    die("Couldn't connect" . mssql_get_last_message());
}
if(mssql_select_db($database, $connection)){
    echo "Selected $database ok<br />";
}
    else {
    die('Failed to select DB');
}

页面显示"无法连接".log错误显示"无法连接OT服务器:192.168.44.96"。

我还在 php 中设置了 mssql.secure_connection = On.ini并重新启动了 apache2。

有什么想法吗?

谢谢!

我不能评论PHP部分,我只知道SQL Server。
但我可以告诉你:这不是Windows身份验证的工作方式。
不能使用 Windows 身份验证,然后将用户名和密码显式传递给服务器。您需要执行以下操作之一:

  1. 使用 SQL Server 身份验证并显式传递用户名和密码
  2. 使用 Windows 身份验证,不要传递用户名和密码 - 您将自动与活动的 Windows 用户连接。

由于您使用的是Linux服务器,因此我很确定您不能使用Windows身份验证。因此,您必须使用 SQL 身份验证(需要在全新 SQL Server 安装中启用(,并且必须在 SQL Server 上创建一个用户。

如果您有默认的 sqlexpress 安装,则可能需要将 sql 服务器配置为允许远程访问连接。我也不知道你是否可以连接Windows身份验证。在 sql 服务器上,您还可以设置 sql 身份验证并使用 uid=;p wd=。