Tim DBA kami tidak memverifikasi cadangan menggunakan di bawah ini TSQL
(yang dapat dengan mudah dilakukan pasca-cadangan dan hampir tidak memerlukan waktu, jadi saya tidak mengerti mengapa tidak):
RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\LOCATION'
Mereka memiliki masalah di masa lalu, jadi meskipun kami pikir mereka akan belajar dari itu, mereka belum. Saya membuat skrip Powershell untuk melakukan ini karena kami memiliki sekitar 100 server dan saya hanya ingin menjalankan skrip ini terhadap semua cadangan hanya untuk memastikan mereka valid. Script di bawah ini berjalan dengan benar (dalam hal itu tidak memecahkan atau melempar kesalahan), saya ingin tahu apakah ada cara untuk mendapatkan pesan yang dicetak kembali di Powershell yang biasanya kita dapatkan di SSMS di mana ia menyatakan Set cadangan pada file 1 adalah valid sebagai verifikasi.
$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
juga bagus jika Anda ingin mengarahkan output untuk digunakan nanti daripada hanya mencetaknya ke host segera.
invoke-sqlcmd -verbose
?