如何使用PowerShell检查BAK文件的状态(未损坏)?

时间:2016-08-09 19:35:51

标签: sql-server powershell database-backups

我将BAK文件传输到~20台目标计算机,并希望验证传输已完成,并且在传输完成后没有破坏BAK文件。

这是powershell工作流程的一部分。

我有以下内容:

Invoke-Sqlcmd -Query "RESTORE VERIFYONLY FROM DISK = N'\\TARGETMACHINE\F$\backup.bak'" -queryTimeout -verbose 65534

在本地执行的同时运行并完成,但我不通过PowerShell获得任何输出。我已经看到了一些写入文本文件的解决方案,但是我真的想确定是否可以在powershell中验证BAK是否可行 - 所以我可以从同一个开始重试工作流如果失败。

这可能吗?

2 个答案:

答案 0 :(得分:0)

如果您在转移前后使用Get-FileHash该怎么办?它不会检查它是否是一个有效的.bak文件,但它确实(主要)确认传输过程没有改变文件。

答案 1 :(得分:0)

当我在本地测试时,我从Powershell收到此消息:

VERBOSE: The backup set on file 1 is valid.

也许你的querytimeout值错了?尝试仅使用-verbose:

的命令
Invoke-Sqlcmd -Query "RESTORE VERIFYONLY FROM DISK = N'\\TARGETMACHINE\F$\backup.bak'" -verbose