Questo articolo KB: Come configurare SQL Server per l'ascolto su una porta specifica chiarirà le cose per te:
Allocazione dinamica delle porte
Se si configura un'istanza di SQL Server per l'utilizzo dell'allocazione dinamica delle porte e non è stata ancora riavviata l'istanza di SQL Server, i valori del registro vengono impostati come segue:
TCPDynamicPorts = Vuoto
TCPPort = 0
Tuttavia, se si configura un'istanza di SQL Server per l'utilizzo dell'allocazione dinamica delle porte e si riavvia l'istanza di SQL Server, i valori del registro vengono impostati come segue:
TCPDynamicPorts = Porta corrente utilizzata
TCPPort = Porta corrente utilizzata
Allocazione porta statica:
Se si configura un'istanza di SQL Server per l'utilizzo di una porta statica e non è stata ancora riavviata l'istanza di SQL Server, i valori del Registro di sistema vengono impostati come segue:
TCPDynamicPorts = Ultima porta utilizzata
TCPPort = Nuova porta statica da utilizzare dopo il prossimo riavvio; nuova porta statica impostata utilizzando l'utilità di rete del server
Tuttavia, se si configura un'istanza di SQL Server per l'utilizzo di una porta statica e si riavvia l'istanza di SQL Server, i valori del registro vengono impostati come segue:
TCPDynamicPorts = Vuoto
TCPPort = Nuova porta statica impostata utilizzando Server Network Utility
per la tua seconda domanda -
Ogni volta che si avvia SQL Server denominato, utilizza la porta allocata. Nel caso in cui la porta sia utilizzata da un altro programma , SQL Server sceglie un'altra porta al momento del riavvio, ad es. La porta dinamica viene scelta al primo avvio e rimarrà generalmente la stessa attraverso i riavvii futuri (memorizzati nel Registro di sistema) - ma se viene utilizzato da un altro programma, quindi SQL Server sceglierà una nuova porta. nota: per i server di produzione utilizzo solo porte statiche: motivi di sicurezza e facilità di gestione.
Nota: più raffredda cosa da scoprire:
Verifica se la porta dinamica è in uso o non utilizza T-SQL:
SELECT NAME
,protocol_desc
,type_desc
,state_desc
,is_admin_endpoint
,port
,is_dynamic_port
,ip_address
FROM sys.tcp_endpoints
Puoi usare netstat -ano
per controllare usando cmdline.
Inoltre, puoi controllare cosa è stato precedentemente memorizzato nella cache nel registro sul lato client per sapere quale porta sta usando per connettersi al server sql:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect
Second question
nella mia domanda sopra.