Установить статический TCP-порт в автоматической установке SQL Server

У меня выполняется автоматическая установка SQL Server 2016 с использованием файла ответов .INI . В моем файле ответов я включаю TCP следующим образом:

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

По завершении установки я также создаю псевдоним с помощью сценария PowerShell. Все идет нормально. Однако экземпляр SQL Server установлен с включенными динамическими портами, и я не вижу способа указать статический порт TCP (я хочу использовать стандартный 1433) в файле ответов. Следовательно, псевдоним не будет работать.

Как мне установить статический TCP-порт через файл ответов или с помощью PowerShell?

0
задан 23 August 2018 в 23:37
1 ответ

После долгих часов поиска жизнеспособного решения я придумал эту функцию PowerShell, которая может установить TCP-порт конкретного экземпляра 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("")
            }
        }
    }
}

Теперь эта функция используется следующим образом:

SetPort "SQLInstance" 1433

Сценарий должен запускаться с повышенными правами, то есть Запуск от имени администратора .

Благодарности относятся к этой записи в блоге , которая указала мне правильное направление.

0
ответ дан 5 December 2019 в 05:23

Теги

Похожие вопросы