当前位置: 首页 > 知识库问答 >
问题:

无法在windows server 2012中建立与SQL的连接

柯捷
2023-03-14

我发现自己在一个工作,我必须与Windows服务器(2012)-我从来没有问题与建立DB连接,但现在我似乎没有找到任何正确的解决方案。

我将向您展示我的连接php代码:


    error_reporting(-1);
    ini_set('display_errors', 1);
    $DB = array ('dbname'=>"test" , 'user'=> '***' , 'passwort'=> '***', 'host'=>'somelocalnetwork ip 192.**');
    $connect = "mysql:dbname=".$DB['dbname']."; host=".$DB['host'];
    try
    {
        $dbh = new PDO($connect,$DB['user'], $DB['passwort']);
        echo "Connection established.
"; $dbh = null; } catch (PDOException $e) { echo $e -> getMessage(); }

这是我在浏览器中得到的结果:

SQLSTATE[HY000][2002]是一家大型计算机公司。

翻译成英文:

无法建立连接,因为目标机器主动拒绝它。

注意:我下载了mssql驱动程序和sqlsrv驱动程序,并将它们解压缩到/ext/direcoty,将它们包含在PHPINI文件中。但是在检查php_info()时,我没有看到任何mssql或sqlsrv部分。我不知道这是否相关

Windows Server设置为WebServer和普通MicrosoftSQLServer

共有2个答案

逑禄
2023-03-14

可能是1)所需的pc授权或2)端口号(可能性较小)。

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

或尝试

try
{
if ($db = mysqli_connect($hostname_db, $username_db, $password_db))
{
    //do something
}
else
{
    throw new Exception('Unable to connect');
}
}
catch(Exception $e)
{
echo $e->getMessage();
}

对于连接问题:

如果总是发生这种情况,它的字面意思是机器存在,但没有服务监听指定的端口,或者有防火墙阻止您。

如果它偶尔发生(您使用了“有时”一词),并且重试成功,很可能是因为服务器有一个完整的“待办事项”。

当您等待在监听套接字上被接受时,您将被置于积压工作中。这种积压是有限的,而且相当短——1、2或3的值并不罕见——因此操作系统可能无法将您的请求排队等待“接受”来使用。

backlog是listen函数的一个参数——在这方面,所有语言和平台基本上都有相同的API,即使是C#one。如果您控制服务器,此参数通常是可配置的,并且可能是从某些设置文件或注册表读取的。调查如何配置服务器。

如果您编写了服务器,您的套接字的接受可能会有繁重的处理,这可以更好地移动到单独的工作线程,以便您的接受总是准备好接收连接。您可以探索各种体系结构选择,以减轻对客户端的排队和顺序处理。

不管您是否可以增加服务器积压,您都需要客户端代码中的重试逻辑来处理这个问题——因为即使有很长的积压,服务器也可能在那个端口上收到很多其他请求。

如果NAT路由器的映射端口耗尽,NAT路由器极有可能会出现此错误。我认为我们可以放弃这种可能性,因为在耗尽之前,路由器有64K个到同一目标地址/端口的同步连接。

戚祺
2023-03-14

要使用sqlsrv连接到sql sever:

<?php

error_reporting(E_ALL);
$serverName = "SuperComputer-PC";

$connectionInfo = array('Database'=>'RiverDatabase', "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect($serverName, $connectionInfo);


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


?>

从以下站点下载php SQL Server:http://www.microsoft.com/en-za/download/details.aspx?id=20098

我使用的是5.4,但这应该适用于5.5,我不确定5.6是否有驱动程序,但如果有,那就太好了。

 类似资料:
  • 给出的消息是; 不能 如何建立连接? 可能的解决方案是什么?

  • 问题内容: 我正在尝试从MS AD中检索一些信息:特定分支机构的成员,部门名称,职位等。 我使用了很多示例,包括Apache Directory LDAP API 和UnboundID,但是我无法与AD建立连接。 RDN: 为了进行搜索,我使用以下过滤器: 当我使用中的数据创建目录上下文时,出现异常: 如果未指定密码,则会出现以下异常: 我已验证我的帐户未锁定。 根据常见的活动目录LDAP绑定错误

  • 我在docker中运行了elasticsearch 8.1,其中包含以下docker compose文件: 我正在尝试使用org.elasticsearch.client.RestClient向es集群发出一个简单的GET请求。 请求: Rest客户端初始化: 主要方法: buildClusterHosts()方法正确地构建了一个HttpHost数组(在本例中只有一个),并将其提供给rest客户端

  • 我正在尝试将Travis CI集成到我的rails应用程序中。在我的本地机器(ubuntu,windows)上一切工作都很好,但是在travis主机上有一个连接错误。下面是我的配置。 正在创建myapp_postgres_1 无法连接到服务器:连接被拒绝服务器是否在主机“Postgres”(172.18.0.2)上运行并接受端口5432上的TCP/IP连接?无法为{“adapter”=>“post

  • 我正在为Swift使用框架。我试图通过websockets API连接,我有一个方法,它在的中被调用。我已经全局声明了我的manager和socketClient,我将把方法的代码放在下面: 我面临的问题是没有调用回调,因此无法发出ping消息。以下是日志: 2018-02-18 19:02:20.589916+0530股票-蛋糕[10965:3662189]日志SocketManager:添加引

  • 你好在我的代码它打破了我的请求,我尝试了几次,但1-2小时后bot状态不再改变。 我在ftp服务器上托管这些文件。 以后从未检索到任务异常:异常=ConnectionError(MaxRetryError(“HTTPConnectionPool(host='username.mydomain',port=80”):url超过最大重试次数:/project/total_visit/count.txt