Jump to content
ruimcosta

PHP + SQLSERVER

Recommended Posts

ruimcosta

Bom dia,

Cá vai uma pergunta para 10 pontos... :D

Tenho várias ligações ao SQL Server em várias máquinas, e preciso de X em  X minutos validar se estas BD's estão activas.

Poderia fazer um "Select 1", mas se não houver ligação à BD, dará erro antes do Select. Precisava de testar a porta 1433 se está activa (pode o servidor ter-se desligado ou reiniciado).


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
ruimcosta

Obrigado a todos pela possível ajuda :D

descobri:

$host = "195.23.29.177";
$port = "1433";

$fp = fsockopen($host,$port,$errno,$errstr,10);

if($fp){
    echo "Porto " . $port . " aberto em " . $host . "\n";
    fclose($fp);
}else{
    echo "Porto " . $port . " fechado em " . $host . "\n";
}
flush();

Desta forma consigo saber se a máquina está ligada ou desligada.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
ruimcosta

Para quem estiver interessado, aproveitando este tópico consegui desenvolver um script que valida:

- Porto aberto ou fechado (a máquina pode estar desligada);

- Se a base de dados existe no servidor Sql Server;

$portassql     = "1433";    
$ipssql        = "192.168.0.1";    
$instanciassql = "instancia";    
$bdssql        = "BASE_DE_DADOS";
$utilssql      = "utilizador_bd";    
$senhassql     = "senha_bd";    


$fp = fsockopen($ipssql, $portassql, $errno, $errstr, 10);

if($fp){
    // Valida se o servidor está ligado
    //echo "Porto " . $portassql . " aberto em " . $host . "\n";
    fclose($fp);
    
    $host  = $ipssql.trim('\ ').$instanciassql.','.$portassql;
    $user  = $utilssql;
    $pw    = $senhassql;
    $db    = $bdssql;

    $conn = mssql_connect($host, $user, $pw) or die ("Erro ao ligar à Base de Dados. Por favor contacte o Administrador de Sistemas!");
    mssql_select_db("MASTER", $conn) or die ("A ligação não encontrou a base de dados seleccionada. Contacte o Administrador de Sistemas");
    
    $sql = "exec sp_databases;";
    $rs  = mssql_query($sql);
    
    while( $row = mssql_fetch_array($rs) ){
        if( $row['DATABASE_NAME'] == $db ){
            $erro = "0";
        }        
    }
    

    if( $erro == "0" ){
        mssql_select_db($db, $conn) or die ("A ligação não encontrou a base de dados seleccionada. Contacte o Administrador de Sistemas");
    }else{
        echo '<p>A base de dados ( '.$db.' ) não se encontra criada no servidor.</p>';
    }
}else{
    // Valida se o servidor está ligado
    echo '<p>O servidor encontra-se desligado. Contacte o administrador da rede.</p>';
}
flush();


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.