Definir porta TCP estática na instalação autônoma do SQL Server

Definir porta TCP estática na instalação autônoma do SQL Server

Tenho uma instalação autônoma do SQL Server 2016 usando o .INIarquivo de resposta. No meu arquivo de resposta, habilito o TCP assim:

; Specify 0 to disable or 1 to enable the TCP/IP protocol. 
TCPENABLED="1"

Assim que a instalação for concluída, também crio um alias usando um script do PowerShell. Até agora tudo bem. No entanto, a instância do SQL Server está instalada com portas dinâmicas habilitadas e não consigo ver uma maneira de especificar uma porta TCP estática (quero usar o padrão 1433) no arquivo de resposta. Portanto, o alias não funcionará.

Como posso definir uma porta TCP estática, por meio do arquivo de resposta ou usando o PowerShell?

Responder1

Depois de longas horas procurando por uma solução viável, descobri esta função do PowerShell que pode definir a porta TCP de uma instância específica do SQL Server:

function SetPort($instance, $port)
{
    # fetch the WMI object that contains TCP settings; filter for the 'IPAll' setting only
    # note that the 'ComputerManagement13' corresponds to SQL Server 2016
    $settings = Get-WmiObject `
        -Namespace root/Microsoft/SqlServer/ComputerManagement13 `
        -Class ServerNetworkProtocolProperty `
        -Filter "InstanceName='$instance' and IPAddressName='IPAll' and PropertyType=1 and ProtocolName='Tcp'"

    # there are two settings in a list: TcpPort and TcpDynamicPorts
    foreach ($setting in $settings)
    {
        if ($setting -ne $null)
        {
            # set the static TCP port and at the same time clear any dynamic ports
            if ($setting.PropertyName -eq "TcpPort")
            {
                $setting.SetStringValue($port)
            }
            elseif ($setting.PropertyName -eq "TcpDynamicPorts")
            {
                $setting.SetStringValue("")
            }
        }
    }
}

Agora, esta função é usada assim:

SetPort "SQLInstance" 1433

O script deve ser executado elevado, ou sejaExecutar como administrador.

Os créditos vão paraesta postagem do blogque me apontou a direção certa.

informação relacionada