Cet article de la base de connaissances : comment configurer SQL Server pour écouter sur un port spécifique clarifiera les choses pour vous:
Allocation dynamique des ports
Si vous configurez une instance de SQL Server pour utiliser l'allocation de port dynamique et que vous n'avez pas encore redémarré l'instance de SQL Server, les valeurs de Registre sont définies comme suit:
TCPDynamicPorts = Vide
TCPPort = 0
Toutefois, si vous configurez une instance de SQL Server pour utiliser l'allocation de port dynamique et redémarrez l'instance de SQL Server, les valeurs de Registre sont définies comme suit:
TCPDynamicPorts = port actuel utilisé
TCPPort = port actuel utilisé
Allocation de port statique:
Si vous configurez une instance de SQL Server pour utiliser un port statique et que vous n'avez pas encore redémarré l'instance de SQL Server, les valeurs de Registre sont définies comme suit:
TCPDynamicPorts = Dernier port utilisé
TCPPort = Nouveau port statique à utiliser après le prochain redémarrage; nouveau port statique que vous avez défini à l'aide de l'utilitaire réseau du serveur
Toutefois, si vous configurez une instance de SQL Server pour utiliser un port statique et redémarrez l'instance de SQL Server, les valeurs de Registre sont définies comme suit:
TCPDynamicPorts = Vide
TCPPort = nouveau port statique que vous avez défini à l'aide de l'utilitaire réseau du serveur
pour votre deuxième question -
Chaque fois que vous démarrez le serveur SQL nommé, il utilise le port alloué. Si le port est utilisé par un autre programme , SQL Server choisit un autre port au moment du redémarrage, c'est-à-dire que le port dynamique est choisi au premier démarrage et restera généralement le même lors des prochains redémarrages (stockés dans le Registre) - mais si son utilisé par un autre programme, puis SQL Server choisira un nouveau port. Remarque: Pour les serveurs Prod, j'utilise uniquement des ports statiques - des raisons de sécurité et de facilité de gestion.
Remarque: Plus de chose cool pour le savoir:
Vérifiez si le port dynamique est utilisé ou n'utilise pas T-SQL:
SELECT NAME
,protocol_desc
,type_desc
,state_desc
,is_admin_endpoint
,port
,is_dynamic_port
,ip_address
FROM sys.tcp_endpoints
Vous pouvez utiliser netstat -ano
pour vérifier à l'aide de cmdline.
De plus, vous pouvez vérifier ce qui a été mis en cache plus tôt dans le registre côté client quant au port utilisé pour se connecter au serveur SQL:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect
Second question
dans ma question ci-dessus.