Jac*_*las 4 sql-server installation
我希望并行安装多个版本的 SQL Server 以同时运行。我想让他们监听不同的 IP 地址。
它们将在 Windows Server 2019 Core 上运行。
我目前使用这样的东西安装:
Setup.exe /qs /ACTION=Install /FEATURES=SQL /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" /AGTSVCACCOUNT="NT AUTHORITY\Network Service" /SAPWD="MYSECRETPASSWORD" /SQLSVCINSTANTFILEINIT="True" /TCPENABLED=1 /IACCEPTSQLSERVERLICENSETERMS /SECURITYMODE=SQL
Run Code Online (Sandbox Code Playgroud)
Setup.exe 上没有指定要侦听的 IP 地址的开关,对吗?如果不是,在 Setup.exe 运行后从命令行配置它的最简单方法是什么?
对于 Windows 上的 SQL Server,可以使用 PowerShell 修改注册表项。以下是默认实例的 SQL Server 2017 路径示例。当然,实例需要重新启动才能使更改生效。
Set-ItemProperty -Path 'HKLM:\software\microsoft\microsoft sql server\mssql14.MSSQLSERVER\mssqlserver\supersocketnetlib\tcp\ipall' -Name tcpdynamicports -Value ''
Set-ItemProperty -Path 'HKLM:\software\microsoft\microsoft sql server\mssql14.MSSQLSERVER\mssqlserver\supersocketnetlib\tcp\ipall' -Name tcpport -Value 1433
Run Code Online (Sandbox Code Playgroud)
编辑:
人们还可以通过识别所需的密钥并根据需要进行更改来针对特定的网络接口。下面是一个示例 PS 函数,它通过 IP 地址查找条目并修改值。这可用于根据需要为每个实例和接口启用/禁用 TCP。
Function Set-SqlInterfaceProtocol($SQLInstanceTcpPath, $IPV4Address, $Enabled, $Active, $Port) {
$interface = Get-ChildItem $SQLInstanceTcpPath `
| ForEach-Object {Get-ItemProperty $_.pspath} `
| Where-Object -Property IPAddress -EQ $IPV4Address
if($interface -eq $null) {
throw "No entry found for IP address $IPV4Address"
}
Set-ItemProperty -Path "$SQLInstanceTcpPath\$($interface.PSChildName)" -Name "Enabled" -Value $Enabled
Set-ItemProperty -Path "$SQLInstanceTcpPath\$($interface.PSChildName)" -Name "Active" -Value $Active
Set-ItemProperty -Path "$SQLInstanceTcpPath\$($interface.PSChildName)" -Name "TcpPort" -Value $Port
}
$SQLInstanceTcpPath = "HKLM:SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp"
Set-SqlInterfaceProtocol -SQLInstanceTcpPath $SQLInstanceTcpPath -IPV4Address "10.1.1.123" -Enabled "1" -Active "1" -Port "1433"
Run Code Online (Sandbox Code Playgroud)
请注意,此脚本未经充分测试,因此您可能需要针对您的场景对其进行调整。