4

我正在使用当前代码尝试访问 msSQL 2005 db:

<?php
$myServer = "[server]";
$myUser = "[username]";
$myPass = "[password]";
$myDB = "[db]";

//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer");

//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
  or die("Couldn't open database $myDB");

//declare the SQL statement that will query the database
$query = "SELECT id, name, year ";
$query .= "FROM cars ";
$query .= "WHERE name='BMW'";

//execute the SQL query and return records
$result = mssql_query($query);

$numRows = mssql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";

//display the results
while($row = mssql_fetch_array($result))
{
  echo "<li>" . $row["id"] . $row["name"] . $row["year"] . "</li>";
}
//close the connection
mssql_close($dbhandle);
?>

它返回以下内容:

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: XXXXXXX in D:\xxxxx.xxx\xxxx.php on line 16
Couldn't connect to SQL Server on XXXXXXX

你认为问题是什么?

4

9 回答 9

5

在我看来,您的 DLL 之一是错误的版本。从 SQL2000 迁移到 SQL2005 存在某种问题,PHP 的创建者并没有自己解决。这里有各种关于它的帖子: 以下链接

我相信 DLL 是 ntwdblib.dll 并且版本至少需要是 2000.80.194.0 版本。如果您正在运行 Apache 或 WampServer,则存储 Apache DLL 的相同 dll 需要被覆盖。

注意:几天前我遇到了这个问题,找到正确的 DLL 并覆盖两者都允许它工作。

另外:您可能需要设置远程连接。Sql Server 2005 默认禁用远程连接。您可以通过运行 SQL 外围应用配置实用程序来允许远程连接。

于 2009-01-22T17:19:02.360 回答
4

尝试调用mssql_get_last_message()以获取最后一条错误消息:

$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer. Error: " . mssql_get_last_message());
于 2009-01-22T17:12:37.037 回答
1

停止使用

mssql_connect

并开始使用

sqlsrv_connect

这将为您省去很多麻烦。另外,函数 *mssql_connect* 已被弃用。

要使用 sqlsrv_connect,您必须下载驱动程序并将其安装为 PHP 的扩展,以识别sqlsrv函数。从 Microsoft 下载中心下载驱动程序(搜索“sql server php driver”),在本文发布时,下载地址为: //www.microsoft.com/en-us/download/details.aspx?id =20098

Microsoft 自己在http://www.microsoft.com/en-us/download/details.aspx?id=20098上清楚地解释了正确的安装步骤

  1. 下载驱动程序。2.放到PHP ext文件夹中。3.更新php.ini 4.重启服务器。

安装 sql server 驱动程序后,只需按照 http://www.php.net/manual/en/function.sqlsrv-connect.php中的说明进行操作。下面是一个快速片段:

<?php
$serverName = "serverName\sqlexpress"; //serverName\instanceName

// Since UID and PWD are not specified in the $connectionInfo array,
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>"dbName");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

投票!

于 2014-03-07T18:31:16.890 回答
0

凭据无效,如果您不使用 localhost,请确保将服务器的 ip 添加到安全列表中。

于 2009-01-22T17:11:52.700 回答
0

I had some difficulties with this a few months ago, and I found that the only way to make it work was to include the instance name when specifying the server. For example:

$myServer = "SERVER\INSTANCENAME";

Specifying just the server would not work, even with TCP/IP enabled.

于 2009-06-26T18:27:00.520 回答
0

首先尝试phpinfo()在您的浏览器上执行类似操作,而不是查看允许哪些数据库。

如果你没有看到类似的东西,mssql那么它没有配置。所以使用odbc_connect()which 将被配置...您的连接字符串将是这样的:

$server = '';
$user = '';
$password = '';
$database = '';
$connection = odbc_connect("Driver={SQL Server Native Client `11.0};Server=$server;Database=$database;", $user, $password);`

如果您使用的是 mssql 2005 或 2008,则将 d 11.0 更改为 10.0,对于其他版本,只需更改为您的 mssql 版本。

于 2013-03-16T23:27:42.190 回答
0

在此站点http://www.microsoft.com/en-us/download/details.aspx?id=20098下载驱动程序,然后打开您的 php.ini 文件并添加您下载的 DLL。

于 2014-06-27T09:48:09.637 回答
0

迟到的回应,但它可能会帮助某人。我们快到了,这是您的连接参数的问题,可能您需要将 servername 指定为IP:port

servername:: MS SQL 服务器。例如hostname:port (Linux), or hostname,port (Windows).

服务器名称应该是“server\instance” 一个实例只不过是不同于 1433 的特定端口地址......所以只需在 mssql 服务器上发现该端口,然后尝试使用以下方式进行连接:ip:port

对我来说完全没问题的示例代码::

    ini_set('display_errors', '1');
    // $myServer = "winsrv22.somedns.co.uk:22320";//this style works as well
    $servername = "123.21.47.23:22320";
    $myUser = "UserName";
    $myPass = 'xxxxxxxx';
    $myDB = "[database]"; 

    //connection to the database
    $dbhandle = mssql_connect($servername, $myUser, $myPass)
        or die("Couldn'tt connect to SQL Server on $myServer"); 
    if($dbhandle) {
     echo "Success, Connected\r\n";
    } else {
        echo "problem :( \r\n";
    }

希望这对某人有所帮助:) 编码快乐!

于 2015-11-20T10:45:21.227 回答
-1

如果您使用的是 Windows 10。

步骤 1. 点击开始按钮

step 2. 输入Service并输入(打开App Services)

步骤 3. 查找 - SQL Server (MSSQLSERVER)

步骤 4. 右键单击​​ -> 选择属性

步骤 5. 显示弹出窗口。您选择第二个选项卡(登录)

步骤 6. 选择本地系统帐户

步骤 7. 并检查允许服务与桌面交互

步骤 8. 最后点击确定。

现在已连接 1 次刷新。我希望它非常有用

于 2020-07-24T16:46:34.650 回答