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

如何用PowerShell遍历数据库数组获取最新BAK文件并执行恢复?

SQL Server指定数据库最新备份自动还原脚本

基础参数定义

先设置备份文件存储路径和需要处理的数据库列表:

# 备份文件所在文件夹路径
$backupPath = "D:\SQLBackups"
# 需要还原的数据库名称数组
$databases = @("Orders", "Items", "Customers")

遍历处理每个数据库

用ForEach循环逐个处理目标数据库,完成通配符生成、最新备份筛选和还原命令执行:

foreach ($dbName in $databases) {
    # 生成匹配规则:自动拼接出*Orders*.bak这类通配符
    $wildcard = "*$dbName*.bak"
    
    # 获取符合规则的最新备份文件(按修改时间倒序,取第一个)
    $latestBak = Get-ChildItem -Path $backupPath -Filter $wildcard |
                 Sort-Object LastWriteTime -Descending |
                 Select-Object -First 1

    if ($latestBak) {
        Write-Host "找到 $dbName 的最新备份:$($latestBak.FullName)"
        # 构建并执行还原命令,按需调整参数
        Restore-SqlDatabase -ServerInstance "YourSQLInstanceName" `
                            -Database $dbName `
                            -BackupFile $latestBak.FullName `
                            -ReplaceDatabase  # 覆盖现有数据库,不需要可删除此行
    } else {
        Write-Warning "未找到 $dbName 对应的备份文件,请检查路径或命名规则"
    }
}

关键细节说明

  • 通配符生成:直接用*$dbName*.bak即可,PowerShell会自动替换变量为数据库名,生成符合需求的匹配字符串,无需额外拼接操作。
  • 最新文件筛选:通过Sort-Object LastWriteTime -Descending按文件修改时间倒序排列,再用Select-Object -First 1精准获取最新备份。
  • 还原参数调整:-ServerInstance替换为你的SQL实例名称;-ReplaceDatabase用于覆盖已存在的同名称数据库,根据实际场景决定是否保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:22:37