Dirección del servidor SQL para conectarse utilizando php

Uso este código para conectarme a SQL Server 2012, pero no funciona

<?php $objConnect = mssql_connect("localhost","usr","pass"); if($objConnect) { echo "Database Connected.
"; echo mssql_error(); } else { echo "Database Connect Failed.
"; } mssql_close($objConnect); ?>

Siempre imprime Database Connect Failed.

Además, ¿cómo puedo conectarme a mi servidor SQL local desde un servidor web externo?

Si su edición es SQL Server Express, probablemente debería estar utilizando:

 $objConnect = mssql_connect("localhost\SQLEXPRESS","usr","pass"); 

O si es una instancia nombrada, entonces

 $objConnect = mssql_connect("localhost\InstanceName","usr","pass"); 

Si necesita conectarse remotamente, entonces obviamente no debería usar localhost ya que ¿cómo ubica el servidor web remoto su servidor localhost ? Debería utilizar uno de los siguientes (suponiendo que el servidor web remoto pueda ver su máquina con la dirección IP 192.168.5.22):

 $objConnect = mssql_connect("192.168.5.22\SQLEXPRESS","usr","pass"); $objConnect = mssql_connect("192.168.5.22\NamedInstance","usr","pass"); $objConnect = mssql_connect("192.168.5.22","usr","pass"); 

Por supuesto, su firewall debe tener el puerto 1433 (y posiblemente 1434) abierto para aceptar esa conexión, y hay una variedad de otras cosas que también pueden salir mal aquí.

Sin embargo, una pequeña sugerencia de depuración 101. En lugar de:

 if($objConnect) { echo "Database Connected.
"; echo mssql_error(); } else { echo "Database Connect Failed.
"; }

Por qué no:

 if($objConnect) { echo "Database Connected.
"; } else { echo "Database Connect Failed.
"; echo mssql_error(); }

Seguramente no necesita escribir un error en la página cuando la base de datos se conecta exitosamente. Y decirnos el mensaje de error real que recibe puede equiparnos mejor para indicarle una solución. Un mensaje genérico de “Error de conexión de la base de datos” que usted escribió no le dará a nadie ninguna pista sobre lo que realmente salió mal. ¡Pero apuesto a que mssql_error() podría!