首页 > 解决方案 > 无法在 Windows 上使用 SQLSRV 驱动程序连接,但可以在 Linux 上使用 DBLIB - PHP & SQL Server 2012 Standard

问题描述

我正在尝试使用 Microsoft 提供的 PHP 驱动程序(称为“sqlsrv”)通过 Windows 连接到 SQL Server 2012(不是 express),但无论我做什么,它都无法工作。我尝试了所有方法,例如指定实例名称、协议、端口,但它不起作用。但是,它使用 DBLib 就像一个魅力,问题是由于一些安全问题,它在 Windows 上已被弃用。谢天谢地,生产和测试服务器都是基于 linux 的,所以我可以使用 DBLib,但不能在本地做任何事情。我们是一个 3 人的团队,我们在同一个目录和服务器上工作,这意味着使用 Git 基本上是没有意义的。我错过了什么吗?SQL Server 是否需要一些额外的配置才能工作?我的代码应该没问题,因为它可以完美地连接到 Azure SQL 专用服务器。

function SQLConn($h,$db,$user,$pass){
    $dsn= 'sqlsrv:server='.$h.';database='.$db;

    try {
        $result = new PDO($dsn, $user, $pass);
    } catch (PDOException $e) {
        $result='Connection to SQL Server failed: ' . $e->getMessage(). "\n";
    }
    return $result;
}

它返回的错误是连接错误,例如:

SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [2]

指定实例名称返回:

SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]SQL Server Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF]

使用 PHP 7.3。请帮助:C

标签: phpsql-server

解决方案


推荐阅读