miércoles, 29 de diciembre de 2010

Servicio Explorador de SQL Server

El otro día tuve que llevar a cabo una instalación en remoto de una aplicación cliente-servidor en los equipos de algunos usuarios de dicho aplicativo. La parte servidora, contiene las bases de datos, que, cómo no, están en SQL Server 2005 Express.

El problema fue que una vez montado todo, probamos a conectar al equipo servidor (teniendo en cuenta que las configuraciones estuviesen correctas) y no había manera de que conectara. Entonces, según fui abordando el problema, me encontraba con lo siguiente:

1) En el Administrador de Configuración del SQL Server, viene configurado por defecto que se usen puertos dinámicas para cada instancia que haya definida en el equipo.

Una vez se comprueba que está habilitado TCP/IP, se define un único puerto TCP, en este caso el 1433 (el que suele ser por defecto).

2) Se lleva a cabo la prueba, pero sigue sin funcionar. Pongo reglas en el firewall de Windows para el puerto TCP 1433, para sqlsvr.exe y alguna otra cosa más. Repetimos las pruebas y nada. Hago otra prueba que consiste en desactivar el firewall, y esta vez sí que conecta. Por lo tanto, tiene que ser algo que está bloqueando el *?!@#¿¡!! firewall.

Leyendo la documentación que viene en MSDN veo que también hay que tener habilitado el puerto UDP 1434. ¿Para qué? Pues para el servicio SQL Server Explorer. Volvemos a probar, y.... conecta sin problemas!!!


El explorador de SQL Server te permite tener definidas las instancias que tienes en tu máquina. Si no tuvieras el servicio activo, el cliente tendría que poner el nombre de máquina, la instancia, y el puerto o la canalización correspondiente. Además, cuando realizas un "rastreo" de los servidores SQL disponibles en tu red, si no tienen el explorador activado, no podrás encontrar nada. Y si por defecto se definen puertos dinámicos para cada instancia, sin el explorador tendrías que conocer el puerto para poder conectarte. Las solicitudes de conexión pasan primero por el puerto UDP 1434, ya que el explorador es el que tiene conocimiento de las instancias existentes, puertos y canalizaciones asociadas.

En resumen, que si estamos detrás de un firewall, hay que tener en cuenta el puerto UDP 1434, además del puerto TCP/IP definido para SQL Server, y así poder conectar sin tener que desactivar el firewall.

Espero que haya servido de ayuda. Hasta la próxima... y feliz año!!!

Tipos de datos del Registro

REG_BINARY: Datos binarios en estado puro, típico para guardar datos hardware.

REG_DWORD: Datos numéricos con longitud máxima de 4 bytes, en binario, hexadecimal o decimal.

REG_EXPAND_SZ: Cadenas de datos ampliables que contienen variables del sistema, como %SystemRoot%.

REG_MULTI_SZ: Datos que consisten en listas de múltiples cadenas.

REG_SZ: Datos alfanuméricos, normalmente legibles para humanos.