2017-04-20 159 views
0

与数据库的连接是非常脆弱的,所以我尝试在建立连接之前测试连接。我发现pg_connectmysql_pinghow-do-i-ping-the-mysql-db-and-reconnect-using-pdo,但没有任何与MSSQL或我可以使用的功能有关。有没有办法在连接之前ping MSSQL数据库

有没有办法在连接之前测试数据库?

+0

***“与数据库的连接非常脆弱”***您是什么意思? –

+0

为什么不只是检查最初的连接工作? – nogad

+0

你的意思是只是ping机器?这可能会告诉您机器已启动,但并不一定意味着SQL Server正在运行。要测试SQL是否正在运行,尝试连接它并等待连接或超时实际上是一种合理的方法。或者您可以使用telnet,如下所示:https://dba.stackexchange.com/questions/23704/easy-way-to-check-connectivity-to-sql-server-from-client。以下是从PHP调用telnet的一些想法:https://www.google.co.uk/search?client=ubuntu&channel=fs&q=call+telnet+from+PHP&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=njP5WPGJAZPW8AfIpK3QCg – ADyson

回答

0

你可以将超时设置为一个很小的数目,并呼吁像

SELECT 1; 

SELECT GETDATE(); 

看看,如果有一些结果回来......

如果连接断开,那么这样的微小请求也应该中断。

如果脆弱并不意味着,你可能会衡量标准的呼叫和比较的执行速度...

0

你可以尝试ping服务器+对应的端口,看看服务器接受连接。

$host = '127.0.0.1'; // ip address, could be localhost 
$port = 1433; // your mssql port 
$timeout = 1; //time to wait in seconds for response 

if($fp = fsockopen($host,$port,$errCode,$errStr,$timeout)) 
{ 
    // Server is OK - responding 
} else { 
    // Server not respoded on given port in given time limit 
} 

fclose($fp); 
+0

我创建了一个函数来测试服务器,但数据库存储在别的地方,我不能使用'fsockopen'来ping数据库所在的ip地址。 –

相关问题