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

Posted

技术标签:

【中文标题】sqlsrv_connect:未找到数据源名称且未指定默认驱动程序【英文标题】:sqlsrv_connect: Data source name not found and no default driver specified 【发布时间】:2013-09-06 13:11:52 【问题描述】:

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

现在,当我尝试连接到 SQL Server 时,出现以下错误。

Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [code] => -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 以下载 Microsoft SQL适用于 x86 的 Server 2012 Native Client ODBC 驱动程序:http://go.microsoft.com/fwlink/?LinkId=163712) [1] => Array ([0] => IM002 [SQLSTATE] => IM002 [1] => 0 [code] => 0 [2] => [ Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 [消息] => [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序))

我的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);
?>

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

【问题讨论】:

从go.microsoft.com/fwlink/?LinkId=163712下载并安装驱动并编辑php.ini。复制 sql server dll 不起作用 谢谢 Bansi。其实我已经下载并安装了 sql server 驱动程序并编辑了 php.ini 文件。 您是否也重新启动了您的网络服务器?你的代码看起来不错 提示:print_r() 输出有回车。如果您使用浏览器的“查看源代码”功能,就会看到它们。 我想你已经做到了,但你没有明确地说出来。您是否安装了 Microsoft SQL Server 2012 Native Client 【参考方案1】:

考虑使用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

【讨论】:

以上是关于sqlsrv_connect:未找到数据源名称且未指定默认驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

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

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

使用 pyodbc 导致错误:未找到数据源名称且未指定默认驱动程序

ADODB 连接 - 错误:未找到数据源名称且未指定默认驱动程序

错误:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

未找到 Python MS Access 数据源名称且未指定默认驱动程序 [重复]