使用Restore-DbaDatabase报错No backups passed through求助
解决Restore-DbaDatabase提示“No backups passed through”的问题
问题场景
作为PowerShell新手,使用以下脚本恢复SQL Server数据库:
Set-DbatoolsInsecureConnection -SessionOnly Get-ChildItem "C:\NH\WH_BEE_$(Get-Date -Format "yyyyMMdd")_*.bak" | ` Restore-DbaDatabase ` -SqlInstance "Bee\BEESQL2022" ` -DatabaseName "WH_BEE" ` -FileMapping @{ "WH_Data1" = "C:\WH_BEE.MDF"; "WH_Data2" = "C:\WH_BEE.NDF"; "WH_Log" = "C:\WH_BEE.LDF" };
运行后出现警告:
WARNING: [23:48:28][Restore-DbaDatabase] No backups passed through. This could mean the SQL instance cannot see the referenced files, the file's headers could not be read or some other issue Module: sql FullName Value Description -------- ----- ----------- sql.connection.trustcert True Trust SQL Server certificate sql.connection.encrypt False Encrypt connection to server
已为C:\NH文件夹及驱动器添加“SQL Server Agent Account”和“Everyone”完全权限,问题仍未解决。
排查与解决步骤
1. 确认备份文件存在且路径匹配
单独执行Get-ChildItem "C:\NH\WH_BEE_$(Get-Date -Format "yyyyMMdd")_*.bak",检查是否返回目标备份文件:
- 如果无结果,说明文件名的日期格式不匹配(比如文件是昨天的备份,而脚本用了今日日期),可手动替换日期字符串测试,例如
Get-ChildItem "C:\NH\WH_BEE_20241005_*.bak" - 确保文件扩展名确实是
.bak,没有被隐藏或重命名
2. 修正SQL Server服务账户权限
恢复数据库时,是SQL Server数据库引擎服务的账户在访问备份文件,而非SQL Server Agent账户:
- 打开
services.msc,找到SQL Server (BEESQL2022)服务,查看其登录账户(通常为NT Service\MSSQL$BEESQL2022) - 给该账户添加
C:\NH文件夹的读取和执行权限(无需完全控制,读取权限足够)
3. 测试默认备份目录
将备份文件复制到SQL Server默认备份目录(例如C:\Program Files\Microsoft SQL Server\MSSQL16.BEESQL2022\MSSQL\Backup),该目录默认已配置SQL服务账户权限,修改脚本路径后重新运行测试。
4. 调整脚本参数传递方式
避免管道传递可能的异常,手动指定备份文件路径:
$backupFile = Get-ChildItem "C:\NH\WH_BEE_$(Get-Date -Format "yyyyMMdd")_*.bak" Restore-DbaDatabase -SqlInstance "Bee\BEESQL2022" -DatabaseName "WH_BEE" -Path $backupFile.FullName -FileMapping @{ "WH_Data1" = "C:\WH_BEE.MDF"; "WH_Data2" = "C:\WH_BEE.NDF"; "WH_Log" = "C:\WH_BEE.LDF" }
同时可尝试移除Set-DbatoolsInsecureConnection -SessionOnly,改用Restore-DbaDatabase的-TrustServerCertificate参数。
5. 验证备份文件完整性
用SQL Server Management Studio(SSMS)手动尝试恢复该备份文件:
- 如果SSMS也无法读取,说明备份文件损坏或格式错误,需重新获取有效备份
- 如果SSMS能正常恢复,说明问题出在PowerShell脚本的参数或权限配置上,回到步骤2-4重新排查
内容的提问来源于stack exchange,提问作者Java
相关产品推荐
相关产品推荐

