New question

Question:

Date: 07-04-2020 09:18:48 (In Spanish)

¿Cómo conectar mi web que está en internet con SQL Server que está en local?[Unresolved]

Buenas amigos.
Tengo la siguiente situación:
Situación real
Tengo un cliente que por años ha tenido un sistema en la empresa, al cual solo pueden ingresar si están en la red local.
Ese sistema es alimentado con información todos los días, la base de datos está en SQL Server. La base de datos ellos no la desean quitar del servidor local en el que la tienen.
Ahora bien, yo le hice un pequeño sistema en php para que los socios de la empresa pudieran ingresar a ver cierta información de su interés y esa información está alojada en el SQL Server que mencioné antes.

Haciendo pruebas:
Si hago pruebas en mi computadora con una BD de prueba, sí logro imprimir en pantalla información.
Pero a la hora que subo mi archivo prueba.php al servidor en internet, no logro conectar con el SQL Server que tengo en local.
Es decir, subo el archivo prueba.php a mi hosting en GoDaddy y en mi computadora tengo la base de datos de prueba, ocupo que ese archivo prueba.php se logre conectar a la base de datos.

El código de prueba.php

$serverName = "localhost"; 
$connectionInfo = array( "Database"=>"db_ejemplo", "UID"=>"kevin", "PWD"=>"kevin");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}else{
	echo "<h1>Conexión establecida</h1>";
}

$sql = "SELECT * FROM tbl_personal";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}
echo "Nombre -> Edad<br>";
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
      echo $row['Nombre']." -> ".$row['Edad']."<br />";
}


Agradezco mucho su ayuda.
Tags: Array PHP - Conexión remota - Configuration - Database - Firewall - MSSQL - PHP - PHP Advanced - PHP Certification - Question - Script PHP - Server - SQL Server - Web Votes: 0 - Answers: 7 - Views: 7 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 07-04-2020 10:22:41 Hola Kevin,
    Lo ideal es que ambos estén en la misma red pero tienes varias opciones.

    1. Expón el puerto de SQL Server al internet para que puedas tener accesso desde internet.
    2. Utiliza un túnel seguro (SSH).
    3. Crea una VPN y pones las máquinas en la misma.

    La primera opción no la recomiendo. Es la más insegura.

    Todas son relativamente fáciles de implementar pero la que tiene me parece más adecuada es implementar un túnel (SSH).
      Votes: 0 - Link answer
     
  • Date: 07-04-2020 11:42:53 Gracias Ernesto.
    Y en el archivo de prueba.php en esa línea #1 donde dice $serverName = "localhost";
    como debería quedar en el caso de que se quiera conectar al servidor local?
    Es decir, en local se usa localhost, pero, ¿cómo debería quedar al subirlo al hosting?
      Votes: 0 - Link answer
     
  • Date: 08-04-2020 05:11:07 Hola Kevin,
    Depende de qué solución escojas.

    Si escoges abrir los puertos de tu routern o un túnel SSH entonces sería la IP pública del router del cliente pero si decides utilizar una VPN entonces podría ser la IP interna del servidor SQL.
      Votes: 0 - Link answer
     
  • Date: 08-04-2020 19:01:37 De acuerdo.
    Y sí, lo que más me serviría es abriendo los puertos o con un tunel SSH. Sin embargo, cuando le coloco la dirección de la ip del router quedando algo así con mi ip: $serverName = "1.1.1.1"; No me funciona aún habiendo abierto los puertos.
    La ip la obtube ingresando a https://www.whatismyip.com/ no sé si es esa la ip de la que me hablas.
      Votes: 0 - Link answer
     
  • Date: 09-04-2020 13:09:38 No te podría decir porque depende de la infraestructura del cliente.
    Están bien mapeados los puertos en el router? Hay algún cortafuego que pueda estar bloqueando las conexiones de entrada? y las de salida? El tráfico fluye a través de un proxy? etc.

    Si el puerto es diferente tienes que especificarlo como parte del nombre del servidor:

    $serverName = "1.1.1.1:123";
    
      Votes: 0 - Link answer
     
  • Date: 12-04-2020 04:56:34 Tal vez estoy diciendo lo obvio aquí, pero la dirección de IP del servidor debe ser visible desde internet (el servidor debe tener IP pública)   Votes: 0 - Link answer
     
  • Date: 13-04-2020 04:42:07 creo que la solucion de erensto esta clara.. iba a decirte algo parecido o usas una VPn o un tunel seguro de ssl .   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In