我们的DBA团队不会使用以下方法来验证备份TSQL
(可以轻松地在备份后完成备份,几乎不需要时间,因此我不知道为什么不这样做):
RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\LOCATION'
他们过去曾遇到过问题,因此即使我们认为他们会从中学到东西,也没有。我创建了一个Powershell脚本来执行此操作,因为我们有大约100多个服务器,我只想针对所有备份运行此脚本,以确保它们有效。下面的脚本可以正确运行(因为它不会中断或抛出错误),我很好奇是否有一种方法可以将返回的消息返回到Powershell中,而我们通常会在SSMS中得到该消息,其中指出文件1上的备份集为作为验证有效。
$SqlCon = New-Object System.Data.SqlClient.SqlConnection
$SqlCon.ConnectionString = "SERVER=SERV\INST;Integrated Security=true;DATABASE=master"
$baks = Get-ChildItem "D:\Backups\" -Filter *.BAK
foreach ($bak in $baks)
{
$SqlCon.Open()
$cd = New-Object System.Data.SqlClient.SqlCommand
$cd.Connection = $SqlCon
$cd.CommandText = "RESTORE VERIFYONLY FROM DISK = @f"
$cd.Parameters.Add("@f", $bak.FullName)
$cd.ExecuteNonQuery()
$SqlCon.Close()
}
invoke-sqlcmd -verbose
?