خانه SQL Server پشتیبان گیری از SQL Server با Powershell SQL Server SQL Server Backup نوشته شده توسط: تیم فنی نیک آموز تاریخ انتشار: ۰۱ دی ۱۴۰۱ آخرین بروزرسانی: ۰۳ آبان ۱۴۰۲ زمان مطالعه: 15 دقیقه ۴.۶ (۹) مقدمه در این مقاله قصد داریم در مورد چگونگی بکآپ SQL با پاورشل صحبت کنیم. بررسی خواهیم کرد که چطور به کمک پاورشل و منبع آزاد ابزار DBAtools بکآپ دیتابیسSQL Server انجام میشود. هر سازمان باید یک طرح بازیابی فاجعه (Disaster Recovery) داشته باشد تا از بروز خسارات غیرمنتظره جلوگیری شود. مشکلاتی ازجمله قطعی برق، حملات سایبری، بلایای طبیعی و… باعث بروز اینگونه خسارات میشوند. بهمنظور آمادگی در برابر این حوادث باید تمرینات منظمی از قبل داشته باشیم که درواقع ایجاد این نوع آمادگی، پروسه بسیار مهمی تلقی میشود. باید این اطمینان خاطر وجود داشته باشد که در صورت بروز هرگونه مشکلی چنانچه دادهها از بین بروند، ساختار معتبری برای بکآپ دیتابیس و امکان بازیابی دادهها وجود دارد. پشتیبان گیری از SQL Server با Powershell به این منظور باید از قبل بهدفعات، مراحل بکآپ و بازیابی دادهها را مورد بازنگری قرارداد. اما تکرار این پروسه در تناوب زمانی معین، ممکن است برای ما خستهکننده باشد. همچنین در سیستم پشتیبانگیری اضطراری لازم است با اجرای دستور DBCC CHECKDB کنترل دقیقتری داشته باشیم. بهعنوان خلاصه این مرحله بهصورت ذیل است: بکآپگیری منظم از دیتابیس و بازیابی منظم دادهها. اجرای دستور DBCC CHECKDB بهمنظور بررسی هماهنگی موجود در دیتابیسها پس از ریستور. بهمنظور اجرای عملکردهای فوق در SQL Server میتوانیم کد T-SQL را نوشته و Maintenance Plan ایجاد کرده و یا SSIS Package آماده کنیم. اگرچه ممکن است به اطلاعات دیگری نیز در مورد اجرای این عملیات نیاز داشته باشیم؛ اما بدون نیاز به این اطلاعات میتوان از ابزار DBATools جهت بکآپ دیتابیس و ریستور عملکردها استفاده کرد. البته قبلاً در مورد ابزار DBATools صحبت کردهایم. شما میتوانید از استودیو داده آزور، جهت بهکارگیری ابزار DBATools استفاده کنید؛ اما ما عملکرد خود را ازطریق پاورشل انجام میدهیم. با استفاده از دستور Get-Helpپاورشل را راهاندازی و سپس ساختارهای بکآپ گرفتهشده را کنترل میکنیم. روش بکآپ از طریق Get-Help *Backup* بسیار آسان است که آن را در تصویر میبینید. چنانچه قبلاً از این روش استفاده نکردهاید Get-Help بهمنظور آپدیت و بهروزرسانی، درخواست نصب پاورشل میدهد. سپس باید شما هم مثل من، این درخواست را تأیید کنید. پس از پایان عملیات نصب، یک فهرست طولانی ایجاد میشود. ما نیاز به اطلاعات ابزار DBATools داریم که در تصویر۲ ملاحظه میکنید. همان گونه که میبینید تابع عملکردی وجود دارد که طی آن عملیات زیادی حین بکآپ از طریق ابزار DBATools انجام میشوند. نخست بیایید آخرین بکآپ دیتابیس را که با بهکارگیری دستور Get-DbaLastBackup اجراشده، بررسی کنیم. البته اجازه دهید یکبار دیگر دستور Get-Help Get-DbaLastBackup را اجرا کرده و نتیجه را مشاهده کنیم. تصویر زیر مربوط به زمانی است که این دستور را در سرور خودم اجرا نمودم. طبق تصویر نتیجهای که مشاهده میکنید؛ یعنی قبلاً از دیتابیس بکآپ تهیه نشده است. اما ازآنجا که من دوست ندارم چنین پیغامی را ببینم |Out-Gridview را به دستورGet-DbaLastBackup-SqlInstance لوکالهاست اضافه میکنم. حداقل تصویر بالا واضحتر است. اکنون میتوانیم خیلی سریع بکآپ بگیریم و به این منظور ما از Backup-DBaDatabase استفاده کردیم که بازیابی مجدد از دستور *Backup*.صورتگرفته است. برای بررسی این دستور به فایل راهنما توجه کنید. درواقع محتوای فایل راهنما شامل تمام آن مواردی است که در استفاده از دستور نیاز داریم. اعماز: سینتکس و نیز نمونههایی از کاربرد دستورات آماده و غیره. بر اساس این اطلاعات من دستور ذیل را بهمنظور اجرای بکآپ دیتابیسهای موجود بر روی لوکالهاست (localhost)مینویسم. Backup-DbaDatabase -SqlInstance localhost همان گونه که در تصویر مشاهده میکنید، من به کمک یک دستور ساده توانستم بکآپ دیتابیس را آماده کنم. مهمترین موضوع در اینجا این است که من چطور باید محل این دیتابیس یا دیتابیسها را مشخص کنم. پاسخ این سؤال در بخش سینتکس فایل راهنما موجود است. قبل از هر چیزی اجازه دهید این دستور را که شما در بکآپگیری نیاز دارید، برایتان به اشتراک بگذارم. با استفاده از دستور ذیل صرفاً میتوانید فقط بکآپ master database را بر روی لوکالهاست بگیرید. Backup-DbaDatabase -SqlInstance localhost -Database master چنانچه بخواهید بکآپ بیش از یک دیتابیس را تهیه کنید باید از کد ذیل استفاده کنید بکآپ دیتابیسهای master و model را تهیه کنید: Backup-DbaDatabase -SqlInstance localhost -Database master, model درواقع ما دیتابیسها را تعیین کردیم، اما نمیدانیم از کجا به آنها دسترسی پیدا کنیم؟ به طور پیشفرض،SQL Server یک بکآپ در محلی که در حین تنظیمات دیتابیس تعیین کردهاید، ایجاد میکند؛ اما چنانچه مایل به تغییر این مکان باشید، چه باید کرد؟ به کمک دستور ذیل شما قادر خواهید بود master دیتابیس را بر روی لوکالهاست و در دایرکتوری D:\SQLBackup file بکآپگیری کنید: Backup-DbaDatabase -SqlInstance localhost -Database master -BackupDirectory D:\SQLbackup مجدداً دستور Get-DbaLastBackup را جهت کنترل درستی بکآپهای گرفتهشده استفاده میکنیم. ازآنجاکه نوع کاربرد دستور متفاوت بود، ما نتایج را در ساختار شبکهای Out-GridView نشان دادیم. هنگامیکه من داده را بررسی کردم. متوجه شدم ما صرفاً یک بکآپ کامل Full Backup تهیه کردیم. چنانچه بخواهیمdifferential backup یا log backup داشته باشیم، چه اقدامی باید انجام داد؟ از نظر یک مسئول دیتابیس این دو نوع بکآپ نیز به همان Full Backup از اهمیت برخوردار هستند؛ لذا باید در بین ساختار بکآپهای دیتابیس موجود باشند. با بهکارگرفتن ابزار DbaTools میتوان بکآپ کامل Full Backup و نیز نوع بکآپهای differential و log را تهیه کرد. برای این کار باید نوع پارامتر را در دستور Backup-DbaDatabase مشخص کنیم. اجازه دهید در اینجا با یک مثال diff backup را برای دیتابیس MSHOWTO بر روی لوکالهاست بگیریم. (البته بهمنظور اجرای این عملکرد لازم است که full backup از دیتابیس MSHOWTO داشته باشیم) Backup-DbaDatabase -SqlInstance localhost -Database master -BackupDirectory D:\SQLBackup -Type Differential شما بلافاصله یاد میگیرید که چطور میتوان در بکآپ به اطلاعاتی چون time stamp، نام دیتابیس و نوع بکآپ دسترسی داشته باشید و نیز درعینحال چطور بکآپ، دیتابیسی با نام متفاوت، دارای مهر زمانی ایجاد کنید. Backup-DbaDatabase -SqlInstance localhost -Database MSHOWTO -BackupDirectory D:\SqlBackup -BackupFilename servername-instancename-dbname-timestamp.bak -ReplaceInName همان گونه که در تصویر بالا ملاحظه میکنید دستور نوشتهشده، با موفقیت اجرا شد، در این قسمت -ReplaceInName را مشاهده کردیم که درباره آن توضیح خواهم داد. ReplaceInName به معنای جایگزین کردن رشته فایل پشتیبان با ارزشهای واقعی است و ما باید این دستوررا در دستور بکآپ تعیین کنیم. همچنین این امکان وجود دارد که نام دیتابیس و اطلاعات مهرزمان را در مورد بخش ReplaceInName بکآپ، مد نظر داشته باشیم. همچنین در صورت تمایل میتوانید اطلاعات مربوط به نوع بکآپ را اینجا اضافه کنید. ( -BackupFileNameرا بهجای -dbname-backuptype-timestamp.bak ) در پایان اجازه دهید توضیح دهم که به کمک چه دستوری میتوان بکآپ هر دیتابیس را در فولدر به نام خودش ذخیره کرد. چنانچه دستور ذیل را راهاندازی کنید خواهید دید فولدری به نام MSHOWTO در مسیر D:\SQLBackup دیتابیس MSHOWTO بر روی لوکالهاست ایجادشده و بکآپ در اینجا گرفته شده است. Backup-DbaDatabase -SqlInstance localhost -Database MSHOWTO -BackupDirectory D:\SqlBackup -BackupFilename servername-instancename-dbname-timestamp.bak -ReplaceInName -CreateFolder ملاحظه میکنید بکآپ با موفقیت انجام شده است. با هم بررسی کنیم: همان گونه که میبینید یک فولدر به نام MSHOWTO ایجاد شده و بکآپ موفقی با نامی که درخواست کرده بودید، در مسیر D:\SQLBackup انجام شده است. چنانچه فولدر دیگری به همین نام در مسیر باشد، فولدر جدید ایجاد نشده و فقط دستور بکآپ انجام میگیرد. بهعنوان مسئول دیتابیس میتوانیم برحسب نوع اسکیوال سرور بکآپ فشرده داشته باشیم و درعینحال صحت بکآپهای گرفتهشده را بررسی کنیم. چطور میتوانیم این عملکردها را انجام دهیم. کد بلاکسهایی که نیاز داریم، در ذیل آمده است: ; Compress Backup فشردهسازی بکآپ : Backup-DbaDatabase -SqlInstance localhost -Database MSHOWTO -BackupDirectory D:\SqlBackup -BackupFilename servername-instancename-dbname-timestamp.bak -ReplaceInName -CreateFolder -CompressBackup کنترل صحت بکآپ گرفتهشده: Backup-DbaDatabase -SqlInstance localhost -Database MSHOWTO -BackupDirectory D:\SqlBackup -BackupFilename servername-instancename-dbname-timestamp.bak -ReplaceInName -CreateFolder –CompressBackup -Checksum -Verify بکآپ فقط کپی CopyOnly بدون شکستن ساختار بکآپ Backup-DbaDatabase -SqlInstance localhost -Database MSHOWTO -BackupDirectory D:\SqlBackup -BackupFilename servername-instancename-dbname-timestamp.bak -ReplaceInName -CreateFolder –CompressBackup -Checksum -Verify -CopyOnly نتیجهگیری شما میتوانید دستورات فوق را برای هر نوع بکآپ خاص خود استفاده کنید. درواقع بکآپگیری و بازیابی اطلاعات اهمیت زیادی برای سازمان دارد. در این مقاله توضیح دادیم که چطور میتوان در اسکیوال سرور با بهکارگیری پاورشل بکآپگیری کرد. در مقاله بعدی نحوه بازگردانی بکآپ توضیح خواهیم داد. چه رتبه ای میدهید؟ میانگین ۴.۶ / ۵. از مجموع ۹ اولین نفر باش معرفی نویسنده مقالات 402 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده تیم فنی نیک آموز مقالات مرتبط ۰۲ آبان SQL Server ابزار Database Engine Tuning Advisor؛ مزایا، کاربردها و روش استفاده تیم فنی نیک آموز ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ