Quien halla intentado conectarse a una base de datos Sql Server 2005 desde php, habrá comprobado que no puede. Incluso habilitando el protocolo TCP/IP y seguir los pasos del propio tutorial de microsoft msdn.
El problema radica en que la librería cliente (ntwdblib.dll) que trae php no está suficientemente actualizada (por defecto la versión 2000.2.8.0, necesitamos la 2000.80.194.0)* para poder conectarse a ésta versión de Sql Server.

Una vez actualizada esa librería, nos conectamos sin problemas con:
$conexion= mssql_connect("SERVIDOR\INSTANCIA","login","clave");
*La librería ntwdblib.dll versión 2000.80.194.0 viene incluida en el cd de SQL Server 2000 (en la carpeta System), para los que no tengáis acceso a dicho cd la he colgado en éste enlace.
Noviembre 12th, 2007 at 3:14 pm
Hola
gracias por tu consejo, pero la verdad, es que no se de que forma actualziar la dll, ya que no sabría si eliminar la versión antigua y pegar la nueva en la carpeta php?
agradecería tu consejo para seguir avanzando en un pequeño ejemplo con php y sql2005.
Noviembre 12th, 2007 at 3:17 pm
Hola esca,
Hay que eliminar la antigua y poner la nueva en la misma ubicación donde tengas la antigua.
Hazte un backup de la libreria anterior por si acaso.
Un saludo
Noviembre 30th, 2007 at 4:03 am
Hola
Tengo problema para conectar php y sql server 2005.
Quisiera saber en donde puedo conseguir la libreria ntwdblib.dll con la versión 2000.80.194.0 que mencionas en tu blog.
Agradecería tu apoyo para encontrar dicha librería.
De antemano gracias.
Saludos.
Noviembre 30th, 2007 at 9:14 am
@Ariel, la he subido a éste post y la puedes descargar directamente del enlace que os he puesto al final del mismo.
Un saludo
Diciembre 20th, 2007 at 8:26 pm
Saludos.
Amigos, he hecho todo lo que señala la documentación tanto de microsoft como la de asier y aun asi persiste el error.
El sqlserver 2005 no es express, he revisado todo lo que se me ha ocurrido. Firewall, permisos de windows 2003, superficie de sql 2005, etc.
El php que tengo configurado esta con wamp2server2.0.
Agradecere cualquier comentario
Diciembre 21st, 2007 at 1:37 am
@jorge has sustituido la librería?
PD: Un consejo, evita el uso de programas que te instalan “todo en uno”, al final aprendes más y de una forma más segura si lo haces a mano tu mismo.
Un saludo
Diciembre 21st, 2007 at 1:51 pm
Asier.
Gracias por contestar.
He hecho de todo. Me estoy dando por vencido ha sido realmente tedioso. Debo conectarme a bd sql 2000 y bd sql 2005 y quiero hacerlo con php.
Con la bd sql 2000 cero problemas, pero con sql 2005 no hay caso.
Este es el mensaje.
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: 192.168.7.2\MSSQLSERVER in C:\wamp\www\sql2005.php on line 5
He hecho de todo, cambie la libreria, incluso instale el php a mano. no se me ocurre que mas hacer.
Lo que no he probado es realizar esto en otra maquina, quizas sea eso.(Me respondo solo estoy volviendome loco, jaja)
Gracias por tomarte la molestia de contestar.
Diciembre 21st, 2007 at 2:12 pm
@jorge prueba a crearte una conexión odbc desde otra máquina distinta al sql server. Suena a que no tienes habilitadas en la base de datos las conexiones tcp/ip remotas.
Diciembre 21st, 2007 at 2:40 pm
Asier.
En el sql server 2005 esta configurada la opcion para conexiones remotas:
Local and remotes connections la opcion using TCP/IP only
Hice la prueba por odbc y se conecto bien, logre realizar consultas y todo.
Esto me complica ya que necesariamente tendre que instalar un odbc a las estaciones clientes.
Pero que hacerle.
Al menos ya se conecta. Muchas gracias por tu tiempo.
Diciembre 21st, 2007 at 2:46 pm
No estoy seguro de lo digo.
“necesariamente tendre que instalar un odbc a las estaciones clientes”, ya me di cuenta de que no es asi.
Gracias
Diciembre 21st, 2007 at 2:49 pm
@jorge lo del odbc te lo decía solo para comprobar que no fuese un problema de red entre los dos equipos.
En principio con sustituir la librería y seguir los pasos del msdn ya debería funcionar. Yo no he tenido más problema, con versiones estandar, developer y enterprise.
Sin verlo, no se me ocurre ninguna cosa más que pueda ser. Lo único comprueba que tu llamada a la instancia de la base de datos es correcta, si no lo has hecho ya.
Diciembre 21st, 2007 at 3:09 pm
Muchas gracias Asier.
De todas formas = salgo del apuro.
Te pasaste por la buena onda y dispocision. Saludos a ti y a los tuyos y que pases unas bonitas fiestas.
Enero 30th, 2008 at 1:19 pm
Sigo sin poder conectarme… Respecto a lo que dice Microsoft, si haces una pagina en PHP no hace falta hacer todo lo del script, sino solo lo del TCP, no? He instalado un APACHE para correr las páginas.
si alguien encuentra la solución que lo diga por favor!
Marzo 26th, 2008 at 11:00 pm
Hola un coordial saludo
Figurate que necesito hacer la conexion a la base de datos de SQL server 2005, pero nada, he rwealizado los pasos anteriormente mencionados pero nada, estoy muerta Loca por que esta joda funcione y nada la verdad, no se quien me pueda ayudar, plis ya le hice por todo lado y nada. Gracias.
Adriana
Abril 10th, 2008 at 9:24 pm
buenas a todos los cybernautas de este blog lo que pasa es que intento conectar el php con el sql server 2005 express e intentado muchas cosas pero realmente no se que hacer cuando abro el sql server el me dice que el nombre del servidor es FELIPEP/SQLEXPRESS al poner este nombre en mssql_connect(’FELIPEP/SQLEXPRESS’,”,”); no conecta la verdad no se que ponerle en usuario y en password por que cuando instale el sql no me pidieron estos datos . tambien lo e echo con la direccion ip que me muestra el puerto tcp/ip cuando le doy propiedades que es 192.168.0.111 claro que hay varios tcp’s Ip1 Ip2 IpA3
mssql_connect(’192.168.0.111,2206′,”,”);
la verdad e probado de varias formas como estas :
mssql_connect(’192.168.0.111,2206′,”,”);
mssql_connect(’192.168.0.111,2206′,’root’,”);
mssql_connect(’FELIPEP/SQLEXPRESS’,'root’,”);
mssql_connect(’localhost’,”,”);
mssql_connect(’localhost’,'root’,”);
mssql_connect(’localhost,2206′,’root’,”);
mssql_connect(’localhost,2206′,”,”);
con mysql me conecto de la siguiente forma:
mysql_connect(’localhost’,'root’,”); (local).
vale aclarar que ya baje la ultima version del archivo .dll de tu pagina
seria de gfran utilidad si puedes enpaquetar todos los archivos que vos utilizas para la coneccion y pues decirme como son los nombres de usuario y contraseña que se generan automaticamente…a y tambien decirme si tengo bien el nombre del servidor bien.
gracias la verdad es muy urgente ….es para un proyecto que voy a empezar y me lo piden con coneccion a sql server…
Abril 11th, 2008 at 1:49 pm
Felipe, no estoy seguro de nada ya que esto ya no uso, pero veo dos cosas, primera que pones la barra “/” y tienes que poner la barra “\”, y segunda, que tienes que tener un usuario y un password.
Y por cierto, pon un password a tu mysql, la seguridad es importante.
Abril 11th, 2008 at 1:53 pm
@Felipe
Con la documentación del enlace a Microsoft y ese driver en el mismo equipo que sirve php, debería funcionar.
Otra solución es usar el nuevo driver específico de microsoft para conectarte.
http://www.microsoft.com/sql/technologies/php/default.mspx
Tienes la documentación en la propia descarga.
Un saludo
Abril 14th, 2008 at 4:45 am
bueno pues muchas gracias por lo que me han dicho pero hasta el momento no e podido hacer mucho lo unico que hice fue darle permisos a sa ponerle una contraseña que se conociera y habilitarlo para la base de datos que cree pero no aun asi no se me soluciono el problema ya estoy dandome por vencido …pero se que si ustedes pudieron hacerlo es por que verdaderamente se puede entonces voy a seguir en la lucha ademas es super importante ahi les dejo mi codigo por si me pueden ayudar …gracias
$conecta=mssql_connect(”FELIPE-71E726C4\SQLEXPRESS”,”sa”,”mi*******”);
el error es este
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: FELIPE-71E726C4\SQLEXPRESS in C:\wamp\www\conectasql\prueba.php on line 2
Abril 15th, 2008 at 4:48 am
Muchas gracias por el aporte, me funciono muy bien
Abril 15th, 2008 at 3:47 pm
prueben esto:
http://www.webestilo.com/php/articulo.phtml?art=19
Abril 23rd, 2008 at 8:50 pm
FUNCIONA!!!!
Yo tube problemas al migrar de SQL2000 A SQL2005 ,pero utilice la DLL que aqui proporcionan .. la coloqué en
c:\windows\system32 y listo..no tube que tocar nada en mi codigo.
saludos-
Abril 30th, 2008 at 11:45 pm
que tal amigos utilice esta dll en XP(iis con php) y me funciona todo bien, pero instalé IIS con php en win2000 server, pero no me funciona. todo esta bien pues puedo ver basdes de datos de otros servidores. lo malo es que no me indica donde existen errores. solo no hace ni dice nada, la pagina se ejecuta pero no muestra inf. al primer error que sucede deja de ejecutarse las secuencias php.
Mayo 1st, 2008 at 2:29 pm
@Carlos, indica al principio del script “error_reporting(E_ALL);” y asegurate de que muestras errores desde el php.ini
Un saludo
Mayo 27th, 2008 at 12:14 am
Que tal como estan quisiera por favor que me ayudaran,
esque tengo un problema con sql server 2000, siempre que hago un programa en visual basic.NET y trato de usarlo desde un host clientey que accesa a la base de datos de un servidor remoto me marca un error de que el sql no puede conectar aservidor porque no acepta conexiones remotas.
por fovor que alguien me explique como se hece o que debo instalar tanto en el host cliente como en servidor, o que debo configurar por favor necesito de su ayuda
Junio 10th, 2008 at 5:15 pm
Estimados:
Probe cambiando la DLL (c:\windows\system32) y funco a la primera al conectarse a SQL Server Express.
La linea de conexion en mi caso quedo asi:
$Conn = mssql_connect(”192.168.201.12\sqlexpress,2133″, “usuario”, “password”)
Gracias por el dato…
Junio 18th, 2008 at 7:26 pm
hola que tal:
Agradeceria su apoyo.
No puedo realizar la conexion a SQL server 2000 con PHP, usando el WAMP… bueno a un servidor que tiene una Base de Datos en SQL server 2000, por que con el servidor LOCAL, si puedo conectarme:
$conection = mssql_connect(”LOCAL”,”",”") or die(”no se puede conectar a SQL Server”);
- NO HAY PROBLEMA, tengo autenticacion de Windows.
pero cuando trato con el servidor remoto
$conection = mssql_connect(”SERVER\DOMINIO”,”",”") or die(”no se puede conectar a SQL Server”);
que tambien tiene autenticacion de Windows.
- ME APARECE:
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: SERVER\DOMINIO in C:\wamp\www\prueba.php on line 15
no se puede conectar a SQL Server
he tratado con un usuario y contraseña, por ejemplo con el que inicio sesion en Windows, que ademas esta habilitado en SQL server y con permisos para las Bases de Datos, la verdad no se que hacer por que con el Local no hay problemas, pero con el remoto… bueno no hay por donde, ya efectue todos los cambios mencionados anteriormente por el sitio.
es urgente, tengo un proyecto y si no me conecto, la verdad avanzare muy poco.
Junio 19th, 2008 at 6:46 pm
Hola necesito que envien el procedimiento, los pasos o sencillamente como conectar una página php con una base de datos sql y que se introduscan datos y luego desde una de estas páginas se muestre.
Espero respuesta
Junio 19th, 2008 at 9:06 pm
Google.com
Junio 26th, 2008 at 8:22 pm
solo para agradecer la poca o mucha informacion dado que aqui en ocaciones solo batean a las personas necesitadas de ayuda para sus proyectos pero en fin ya puede realizar la conexion, les dejo el codigo que me funciono en la conexion de php con un servidor remoto en SQL server:
el puerto del servidor lo pueden ver en propiedades de configuracion SQL, configuracion de red y propiedades del TCP IP
muy importante que actualicen la DLL ntwdblib.dll por la que esta mencionada en la pagina y revisen los permisos y privilegios de la cuenta de usuario, si usan “sa” de SQL revisen la contraseña que tiene.
bueno saludos y espero que les sirva, de antemano gracias.
Julio 15th, 2008 at 11:30 pm
Solo para agrdecer ya que tenia todo bien configurado y no me podia conectar de forma remota, me podia conectar solo en local de esta forma
$conection = mssql_connect(”192.168.1.64\SQLEXPRESS”,”sa”,”123456″) or die(”no se puede conectar a SQL Server”);
y gracias a los aportes me pude conectar de forma remota de esta forma
$conection = mssql_connect(”192.168.1.64\SQLEXPRESS,1433″,”sa”,”123456″) or die(”no se puede conectar a SQL Server”);
muchas gracias
Julio 16th, 2008 at 6:38 am
[...] 1 - Actualizar la librería ntwdblib.dll a la versión 2000.80.194.0. [...]
Julio 25th, 2008 at 9:00 am
he realizado todo lo que han dicho y aun no puedo conectarme
**************************
Ejemplo de PHP
<?php
function Conectarse()
{
if (!($link=mssql_connect(”localhost”,”sa”,”")))
{
echo “Error conectando a la base de datos.”;
exit();
}
if (!mssql_select_db(”db_final”,$link))
{
echo “Error seleccionando la base de datos.”;
exit();
}
return $link;
}
$link=Conectarse();
echo “Conexión con la base de datos conseguida.”;
mssql_close($link); //cierra la conexion
?>
****************************************************
y me genera este error:
Fatal error: Call to undefined function mssql_connect() in C:\Inetpub\wwwroot\conexion.php on line 10
Julio 30th, 2008 at 4:29 am
Asier eres lo máximo, por fin pude conectar el vendito php con Sql Server 2005, fue todo un reto, te agradesco de antemano por esas ganas de ayudar.
Mira Johan, yo tambien tube ese tiepo de problemas, pero intenta instalando la versión 5.1.4 de php y toma en consideración la recomendaciones de Asier respecto al DLL que va ser tu segundo problema.
Pero antes imagino que ya corregiste en el c:/windows/php.ini lo siguiente:
1.- indicar a php donde se encuentran las dll
corregir el codigo–>
extension_dir = “./” por el codigo –>
extension_dir = “c:/php/ext”
2.- habilitar la dll de sqlserver, donde deberas de quitar el punto y coma del siguiente modo—>;extension=php_mssql.dll por el codigo –> extension=php_mssql.dll
Y eso es todo, espero no haber confundido mas las cosas.
Saludos amigo
Agosto 14th, 2008 at 1:39 am
Sustituí la Dll “ntwdblib” en el system32 y reinicie el apache server. Localmente deben escribir en la parte de conexion lo siguiente
$conectID=mssql_connect(”IT-BRS\SQLEXPRESS”,”sa”,”miclave”);
asi me funciono.
Agosto 27th, 2008 at 5:43 pm
Yo tenia el mismo problema, utilise todos los metodos habidos y por haber, incluso abilite el IIS para conectar mi bd con php pero nada.
Hasta que al final me dio.
¿Que es lo que hice?
Desabilite el IIS.
Descargue el AppServ 2.5.9 lo instale con excepcion de mysql porque mi bd esta en sql 2005 despues le pones la dll que dicen en este foro, yo pensaba que el problema era del AppServ pero no es eso. La razon es que la libreria para acceder a los datos a sql 2000 es diferente a la de 2005 una vez que pones la dll en system32 todo sirve a la perfección.
Septiembre 17th, 2008 at 9:21 pm
Buenas les escribo porque estoy presentando problemas para conectarme a mi bd desde php, ya he leido varios foros con temas referentes a esta falla mas sin embargo aun no he dado con la solucion (habiendo realizado todas las recomendaciones que dan en dichos foros).
Antes que nada el mensaje que me muestra al momento de intentar hacer la conexion es el siguiente:
Fatal error: Call to undefined function mssql_connect() in C:\Apache\htdocs\josefelix\PruebaCargaDatos\Insert ar.php on line 5
Las herramientas bajo las cuales estoy trabajando son las siguientes:
.- Apache server 2.2
.- SQL Server(SQLEXPRESS) 2005 Version 5.1
.- PHP Version 5.2.6
.- SO Windows XP SP2
Apache instalado en C:\Apache y php en C:\PHP (por si acaso es de utilidad) y todo en la misma pc
Entre las acciones que he realizado para intentar de solventar esta falla estan las siguiente:
.- Primero Edite el php.ini ubicado en C:\WINDOWS eliminandole el ; antes de las siguientes dlls
extension=php_msql.dll
extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
.- verifique la ruta de extension_dir a fin de verificar que se encontraran los dlls habilitados y la ruta que tiene el archivo es la siguiente
extension_dir =”C:\PHP\ext” (y en dicha ruta si se encuentran los archivos).
El codigo que tengo en dicha pagina (pagina solo para prueba) es el siguiente:
Conexion mssql
Nombre
Telefono
Agradezco de antemano la ayuda que me puedan prestar
PD: Se me olvido decirles que tambien cambie el archivo ntwdblib.dll ubicado en C:\PHP cuya version era 2000.2.8.0 por otro cuya version es 2000.80.194.0
Octubre 1st, 2008 at 7:38 pm
Hola.
He intentado conectar PHP 5.2.6 con SQL Server 2005, pero no lo logro. Estoy usando IIS sobre Windows server 2003. He notado que si ejecuto el script PHP desde la ventana de comandos todo se conecta y realiza las consultas sin problemas, pero si ejecuto el mismo script usando IIS, no me permite conectarme.
Noviembre 6th, 2008 at 8:17 pm
Muchas Graicias por la ayuda me di muchos cabezasos pero al fin pude. deben tener en cuenta q el usuario con el q vallan a entrar debe tener clave $link=mssql_connect(”xx.xx.xx.xx”,”sa”,”123456″).
y copiar la libreria dll que aqui se cita en mi caso lo hize asi tanto en win/sisten32 como en php, y al fin se conecto.