sqlsrv_connect:未找到数据源名称且未指定默认驱动程序

时间:2013-09-03 10:29:12

标签: php sql sql-server xampp

我正在尝试从另一台机器上的PHP代码连接到机器1上的SQL Server 2008。 我使用的是PHP 5.4.7,XAMPP 1.8.1,我已将sql server dll复制到PHP / ext文件夹中并修改了php.ini文件。

现在,当我尝试连接到SQL服务器时,我收到了以下错误。

  

数组([0] =>数组([0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [代码] => -49 [2] =>这扩展需要Microsoft SQL Server 2012 Native Client。访问以下URL以下载x86的Microsoft SQL Server 2012 Native Client ODBC驱动程序:http://go.microsoft.com/fwlink/?LinkId=163712 [message] =>此扩展需要Microsoft SQL Server 2012 Native Client。访问以下URL以下载x86的Microsoft SQL Server 2012 Native Client ODBC驱动程序:http://go.microsoft.com/fwlink/?LinkId=163712)[1] =>数组([0] => IM002 [SQLSTATE] => IM002 [1] = > 0 [code] => 0 [2] => [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序[message] => [Microsoft] [ODBC驱动程序管理器]数据源未找到名称且未指定默认驱动程序))

我的PHP代码如下 -

<?php
//phpinfo(); 
$server = "sql server\express,1433"; //serverName\instanceName, portNumber (default is 1433)
$uid="username";
$pwd="password";
$connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database"=>"rod_prd_tmart");
$conn = sqlsrv_connect( $server, $connectionInfo) ;

if($conn) 
{
   echo "Connection established.\n";
} else
{
   echo "Connection could not be established in this text.\n";
   die( print_r( sqlsrv_errors(), true));
}

sqlsrv_close( $conn);
?>

请帮我解决这个问题。感谢。

1 个答案:

答案 0 :(得分:0)

考虑使用PDO以获得更大的灵活性:

//$pdo = new PDO("sqlsrv:Server=$hostname;Database=$dbname;", $username, $password);  // works with proper driver for PHP.
$pdo = new PDO("odbc:Driver={SQL Server};Server=$hostname;Database=$dbname;", $username, $password);  // works with proper driver for ODBC and PHP ODBC.

由于奇怪的编译器版本不兼容,我无法使第一行工作,但第二行在安装Microsoft ODBC Driver 11 for SQL Server之后工作正常

根据php.ini,PHP版本5.3.0具有内置的ODBC支持,但仍然列出了活动的extension=php_pdo_odbc.dll