Eu estava tendo uma discussão hoje Dynamic Ports
com um dos meus colegas de trabalho e poderia precisar de alguma ajuda para esclarecer como eles funcionam.
Primeira pergunta: Se a IPALL
TCP Dynmaic Ports
configuração for um número específico (digamos 1971), isso significa que você tem uma porta estática de 1971 ou uma porta dinâmica que atualmente é 1971 e pode mudar em algum momento no futuro.
Segunda pergunta: Essa é a que eu mais tenho curiosidade. Temos uma instância que tem a mesma porta (o valor na IPALL
TCP Dynmaic Ports
configuração) há vários anos por meio de dezenas de reinicializações de instância. O que realmente faz com que a porta dinâmica realmente mude após a reinicialização de uma instância?
Este artigo da KB: Como configurar o SQL Server para escutar em uma porta específica esclarecerá as coisas para você:
Alocação de Porta Dinâmica
Se você configurar uma instância do SQL Server para usar a alocação dinâmica de porta e ainda não tiver reiniciado a instância do SQL Server, os valores do registro serão definidos da seguinte maneira:
No entanto, se você configurar uma instância do SQL Server para usar a alocação dinâmica de porta e reiniciar a instância do SQL Server, os valores do registro serão definidos da seguinte maneira:
Alocação de Porta Estática:
Se você configurar uma instância do SQL Server para usar uma porta estática e ainda não tiver reiniciado a instância do SQL Server, os valores do registro serão definidos da seguinte maneira:
No entanto, se você configurar uma instância do SQL Server para usar uma porta estática e reiniciar a instância do SQL Server, os valores do registro serão definidos da seguinte maneira:
para sua segunda pergunta -
Sempre que você inicia o SQLServer nomeado, ele usa a porta alocada. Caso a porta seja usada por outro programa , o SQL Server escolhe outra porta no momento da reinicialização, ou seja, a porta dinâmica é escolhida na primeira inicialização e geralmente permanecerá a mesma nas futuras reinicializações (armazenadas no Registro) - mas se é usado por outro programa, então o SQL Server escolherá uma nova porta. nota: Para Prod Servers, uso apenas portas estáticas - razões de segurança e facilidade de gerenciamento.
Nota: Mais coisa legal para descobrir:
Verifique se a porta dinâmica está sendo usada ou não usando T-SQL:
Você pode usar
netstat -ano
para verificar usando cmdline.Além disso, você pode verificar o que foi armazenado em cache anteriormente no registro no lado do cliente quanto à porta que está usando para se conectar ao servidor sql: