El pasado día, tras realizar una instalación de SQL Server 2008 en mi portátil con Windows 7, me encontré sin poder conectar a la instancia utilizando SQL Server Management Studio (SSMS). Recordaba que debido a los cambios introducidos en el Firewall de Windows Server 2008 y Windows Vista esto se debía con seguridad a puertos requeridos por SQL Server que no estaban abiertos en el Firewall.

La sección Configurar Firewall de Windows para permitir el acceso a SQL Server de la documentación en línea de SQL Server incluye información sobre cómo abrir en el Firewall de Windows los puertos requeridos por los diferentes servicios de SQL Server. Sin embargo, buscando esta información descubrí una manera mucho más sencilla de abrir estos puertos en el artículo de la Knowlege Base KB968872:

25082009B

El artículo incluye la opción de resolución automática Microsoft "Fix it" que permite solucionar de manera sencilla el problema en cuestión a través de un sencillo programa de setup. El setup de "Fix it" en este artículo está diseñado para Windows Server 2008 pero el script que es finalmente ejecutado por este setup está incluido en el mismo artículo y puede ser ejecutado tanto en Windows Vista como en Windows 7:

@echo =========  SQL Server Ports  ===================
@echo Enabling SQLServer default instance port 1433
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Enabling Dedicated Admin Connection port 1434
netsh firewall set portopening TCP 1434 "SQL Admin Connection"
@echo Enabling conventional SQL Server Service Broker port 4022 
netsh firewall set portopening TCP 4022 "SQL Service Broker"
@echo Enabling Transact-SQL Debugger/RPC port 135
netsh firewall set portopening TCP 135 "SQL Debugger/RPC"
@echo =========  Analysis Services Ports  ==============
@echo Enabling SSAS Default Instance port 2383
netsh firewall set portopening TCP 2383 "Analysis Services"
@echo Enabling SQL Server Browser Service port 2382
netsh firewall set portopening TCP 2382 "SQL Browser"
@echo =========  Misc Applications  ==============
@echo Enabling HTTP port 80
netsh firewall set portopening TCP 80 "HTTP"
@echo Enabling SSL port 443
netsh firewall set portopening TCP 443 "SSL"
@echo Enabling port for SQL Server Browser Service's 'Browse' Button
netsh firewall set portopening UDP 1434 "SQL Browser"
@echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK)
netsh firewall set multicastbroadcastresponse ENABLE

Al ejecutar este script en Windows 7 se mostrarán varios mensajes de "warning" ya que el comando netsh firewall se encuentra depreciado en Windows 7 (netsh advfirewall firewall es el comando recomenado) aunque el script funcionará en cualquier caso.

¡Gracias por este script al equipo de Microsoft "Fix it"!

-- Jorge Pérez Campo, Microsoft Customer Support Services