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

Azure中SQL Server 2017重启后,是否有PowerShell函数实现自动重连?

自动化Azure SQL Server虚拟机重启后的数据库重连流程

你提到虚拟机自动重启后无需手动操作、等待一段时间数据库就会自动上线重连,这其实是SQL Server的默认行为——只要SQL Server服务设置为自动启动,虚拟机重启后服务会自动启动,数据库也会随之完成恢复并上线,这个过程的耗时取决于数据库大小和恢复逻辑,一般几分钟内就能完成。

如果需要主动验证连接状态,或者在某些特殊场景下主动触发连接检查,这里提供一个实用的PowerShell函数Reconnect-SQLServer:

function Reconnect-SQLServer {
    param(
        [Parameter(Mandatory=$true)]
        [string]$ServerInstance,
        [int]$RetryCount = 5,
        [int]$RetryIntervalSeconds = 30
    )

    $attempt = 0
    $connected = $false

    while ($attempt -lt $RetryCount -and -not $connected) {
        try {
            # 尝试建立SQL连接
            $connectionString = "Server=$ServerInstance;Integrated Security=True;Connection Timeout=10"
            $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
            $connection.Open()
            
            if ($connection.State -eq 'Open') {
                Write-Host "成功连接到SQL Server实例: $ServerInstance" -ForegroundColor Green
                $connected = $true
            }
            $connection.Close()
        }
        catch {
            $attempt++
            Write-Warning "连接失败(第$attempt次尝试): $_"
            if ($attempt -lt $RetryCount) {
                Write-Host "等待$RetryIntervalSeconds秒后重试..." -ForegroundColor Cyan
                Start-Sleep -Seconds $RetryIntervalSeconds
            }
        }
    }

    if (-not $connected) {
        Write-Error "经过$RetryCount次尝试后,仍无法连接到SQL Server实例: $ServerInstance"
    }
}

使用说明

  • 可以直接在Azure虚拟机的PowerShell窗口中定义该函数,或者将代码保存为.ps1脚本文件执行
  • 调用示例:
    # 连接默认实例
    Reconnect-SQLServer -ServerInstance "localhost"
    # 带重试参数连接命名实例
    Reconnect-SQLServer -ServerInstance "localhost\MSSQLSERVER2017" -RetryCount 6 -RetryIntervalSeconds 20
    
    参数说明:
    • ServerInstance:必填,SQL Server实例名称(默认实例填localhost即可)
    • RetryCount:可选,最大重试次数,默认5次
    • RetryIntervalSeconds:可选,每次重试的间隔秒数,默认30秒

额外提示

  1. 确认SQL Server服务启动类型:打开服务管理器,找到SQL Server (MSSQLSERVER),确保启动类型设置为自动,这是虚拟机重启后服务自动启动的前提
  2. 查看恢复进度:如果想确认数据库恢复状态,可以打开SQL Server错误日志,里面会记录数据库恢复的详细过程
  3. 自动执行脚本:如果需要虚拟机重启后自动运行该检查脚本,可以创建Windows任务计划,触发条件设为“系统启动时”,执行账户选择本地管理员账户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:50:21