Este artículo de KB: Cómo configurar SQL Server para escuchar en un puerto específico le aclarará las cosas:
Asignación dinámica de puertos
Si configura una instancia de SQL Server para utilizar la asignación dinámica de puertos y aún no ha reiniciado la instancia de SQL Server, los valores del registro se establecen de la siguiente manera:
TCPDynamicPorts = En blanco
TCPPort = 0
Sin embargo, si configura una instancia de SQL Server para utilizar la asignación dinámica de puertos y reinicia la instancia de SQL Server, los valores del registro se establecen de la siguiente manera:
TCPDynamicPorts = Puerto actual que se usa
TCPPort = puerto actual que se utiliza
Asignación de puertos estáticos:
Si configura una instancia de SQL Server para usar un puerto estático y aún no ha reiniciado la instancia de SQL Server, los valores del registro se establecen de la siguiente manera:
TCPDynamicPorts = Último puerto que se usa
TCPPort = Nuevo puerto estático que se utilizará después del próximo reinicio; nuevo puerto estático que establezca mediante la Utilidad de red del servidor
Sin embargo, si configura una instancia de SQL Server para usar un puerto estático y reinicia la instancia de SQL Server, los valores del registro se establecen de la siguiente manera:
TCPDynamicPorts = En blanco
TCPPort = Nuevo puerto estático que configura utilizando la Utilidad de red del servidor
Sobre la segunda pregunta -
Cada vez que inicia el SQLServer nombrado, utiliza el puerto asignado. En caso de que otro programa utilice el puerto , SQL Server elige otro puerto en el momento del reinicio, es decir, el puerto dinámico se elige en el primer inicio y, en general , seguirá siendo el mismo en futuros reinicios (almacenados en el Registro), pero si es utilizado por otro programa, luego el servidor SQL elegirá un nuevo puerto. nota: para los servidores Prod, solo uso puertos estáticos: razones de seguridad y facilidad de administración
Nota: Más cosas interesantes para descubrir:
Compruebe si el puerto dinámico se está utilizando o no con T-SQL:
SELECT NAME
,protocol_desc
,type_desc
,state_desc
,is_admin_endpoint
,port
,is_dynamic_port
,ip_address
FROM sys.tcp_endpoints
Puede usar netstat -ano
para verificar usando cmdline.
Además, puede verificar qué se almacenó en caché anteriormente en el registro en el lado del cliente en cuanto a qué puerto está utilizando para conectarse al servidor sql:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect
Second question
en mi pregunta anterior.second question
: cada vez que inicia el SQLServer con nombre, utiliza el puerto asignado. En caso de que otro programa use el puerto , SQL Server elige otro puerto en el momento del reinicio. El puerto dinámico se elige en el primer inicio y, en general, seguirá siendo el mismo en futuros reinicios (almacenados en el Registro), pero si lo utiliza otro programa, el servidor SQL elegirá un nuevo puerto. nota : para los servidores Prod, solo uso puertos estáticos: razones de seguridad y facilidad de administración.