Usando TSQL, como posso descobrir se o servidor MS SQL (qualquer versão) está configurado para usar porta estática ou está usando porta dinâmica?
Script que estou tentando usar:
DECLARE @TcpPort VARCHAR(5)
,@RegKey VARCHAR(100)
IF @@SERVICENAME !='MSSQLSERVER'
BEGIN
SET @RegKey = 'SOFTWARE\Microsoft\Microsoft SQL Server\' + @@SERVICENAME + '\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'
END
ELSE
BEGIN
SET @RegKey = 'SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER\SUPERSOCKETNETLIB\TCP\IPAll'
END
EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE'
,@key = @RegKey
,@value_name = 'TcpPort'
,@value = @TcpPort OUTPUT
EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE'
,@key = @RegKey
,@value_name = 'TcpDynamicPorts'
,@value = @TcpPort OUTPUT
SELECT @TcpPort AS PortNumber
,@@SERVERNAME AS ServerName
,@@SERVICENAME AS ServiceName
Você pode determinar qual porta uma instância está usando no log de erros, mas não se é estática ou dinâmica.
A alternativa seria ler do registro via xp_regread.
Eu acho que é possível (teoricamente):
outra maneira de descobrir qual porta o sql server está usando é através do DMV chamado sys.dm_exec_connections conforme o script abaixo.