You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可用PowerShell脚本修改SQL Server TCP IPALL端口及SSMS配置

解决PowerShell修改SQL Server TCP IPAll端口的路径错误问题

核心排查方向

  • SMO组件版本匹配:使用SqlServer模块替代已弃用的SQLPS模块,确保模块版本与SQL Server版本兼容(例如SQL Server 2019对应SqlServer模块21.x版本)。
  • 实例名称准确性:默认实例名称为MSSQLSERVER,命名实例需填写准确名称(如SQL2019);本地服务器可使用.或localhost。
  • 运行权限:必须以管理员身份启动PowerShell,修改SQL Server网络配置需要系统级权限。
  • WMI路径验证:先列出服务器上的所有实例与协议,确认目标实例和TCP协议存在:
    Import-Module SqlServer
    $managedComputer = New-Object Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer "."
    # 列出所有实例
    $managedComputer.ServerInstances | Select-Object Name
    # 列出实例的所有协议
    $managedComputer.ServerInstances["MSSQLSERVER"].ServerProtocols | Select-Object Name, IsEnabled
    

修正后的可运行脚本

# 加载官方推荐的SqlServer模块(替代旧版SQLPS)
Import-Module SqlServer -ErrorAction Stop

param(
    [string]$ServerName = $(Read-Host -Prompt "输入服务器名称(本地用.或localhost)"),
    [string]$InstanceName = "MSSQLSERVER",
    [string]$TargetPort = "14330"
)

try {
    # 初始化WMI管理对象
    $managedComputer = New-Object Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer $ServerName

    # 定位目标SQL实例
    $serverInstance = $managedComputer.ServerInstances | Where-Object { $_.Name -eq $InstanceName }
    if (-not $serverInstance) {
        throw "未找到指定实例: $InstanceName"
    }

    # 定位TCP协议
    $tcpProtocol = $serverInstance.ServerProtocols | Where-Object { $_.Name -eq "Tcp" }
    if (-not $tcpProtocol) {
        throw "实例 $InstanceName 未配置TCP协议"
    }

    # 启用TCP协议(若未启用)
    if (-not $tcpProtocol.IsEnabled) {
        $tcpProtocol.IsEnabled = $true
        $tcpProtocol.Alter()
        Write-Host "已启用TCP协议"
    }

    # 定位IPAll配置节点
    $ipAll = $tcpProtocol.IPAddresses | Where-Object { $_.Name -eq "IPAll" }
    if (-not $ipAll) {
        throw "未找到IPAll配置项"
    }

    # 修改静态端口并清空动态端口
    $ipAll.IPAddressProperties['TcpPort'].Value = $TargetPort
    $ipAll.IPAddressProperties['TcpDynamicPorts'].Value = ""

    # 提交配置更改
    $tcpProtocol.Alter()
    Write-Host "IPAll端口已成功修改为: $TargetPort"

    # 必须重启服务生效
    Write-Host "请手动重启SQL Server服务 '$InstanceName' 使配置生效"
}
catch {
    Write-Error "执行失败: $_"
}

后续验证与SSMS连接说明

  1. 验证配置:打开SQL Server配置管理器,依次进入「SQL Server网络配置」→「<实例名>的协议」→「TCP/IP」→「IP地址」,检查IPAll的「TCP端口」是否已更新。
  2. 生效步骤:重启对应的SQL Server服务后,使用Test-NetConnection $ServerName -Port $TargetPort测试端口连通性。
  3. SSMS连接:SSMS本身无需修改配置,连接时在服务器名称后添加端口号即可(例如localhost,14330)。

内容的提问来源于stack exchange,提问作者Midnite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:22:28