আমাদের ডিবিএ টিম নীচে ব্যবহার করে ব্যাকআপগুলি যাচাই করে না TSQL
(যা সহজেই পোস্ট-ব্যাকআপ করা যায় এবং প্রায় সময় লাগে না, তাই কেন পাই না):
RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\LOCATION'
তাদের অতীতে সমস্যা ছিল, সুতরাং আমরা যদি মনে করি তারা এগুলি শিখতে পারে তবে তারা তা করেনি। আমি এটি করার জন্য একটি পাওয়ারশেল স্ক্রিপ্ট তৈরি করেছি কারণ আমাদের প্রায় 100+ সার্ভার রয়েছে এবং আমি এই স্ক্রিপ্টটি কেবলমাত্র বৈধ কিনা তা নিশ্চিত করার জন্য সমস্ত ব্যাকআপের বিপরীতে চালাতে চাই। নীচের স্ক্রিপ্টটি সঠিকভাবে চলমান (এতে এটি ত্রুটিগুলি ভেঙে না ফেলে বা ছড়িয়ে দেয় না), আমি যদি কৌতূহল বোধ করি তবে পাওয়ারশেলের মুদ্রিত বার্তাটি ফেরত পাওয়ার কোনও উপায় আছে যা আমরা সাধারণত এসএসএমএসে পাই যেখানে এটিতে বলা আছে যে ফাইল 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
আপনি হোস্টে কেবল তাত্ক্ষণিকভাবে মুদ্রণের পরিবর্তে আউটপুটটিকে পরে ব্যবহারের জন্য পুনর্নির্দেশ করতে চান তবে তাও দুর্দান্ত ।
invoke-sqlcmd -verbose
?