خانه SQL Server فرآیند بازیابی دیتابیس برای یک ساعت خاص SQL Server SQL Server Backup نوشته شده توسط: تیم فنی نیک آموز تاریخ انتشار: ۱۲ خرداد ۱۴۰۰ آخرین بروزرسانی: 22 شهریور 1402 زمان مطالعه: 12 دقیقه ۵ (۱) مقدمه در این مقاله قصد داریم شما را با فرآیند بازیابی بانک اطلاعاتی برای یک ساعت خاص که اصطلاحاً (Restoring to a Point in Timer Recovery) آشنا کنیم، در نظر بگیرید که در یک سازمانی تیم توسعه به اشتباه در محیط عملیاتی ممکن است یک دستور حذف را بنویسد و برای مثال یک میلیون رکورد حذف شود. اگر به عنوان مسئول نگهداری بانک اطلاعاتی در سازمانی مشغول به کار هستید و از دیتابیس سازمان به صورت مرتب از لاگ فایل بکاپ تهیه کنید میتوانید دیتابیس را به یک ساعت خاص بازیابی کنید. در ادامه یک سناریو در را همین رابطه برای شما ارائه خواهیم داد، تا با فرآیند بازیابی دیتابیس به یک ساعت خاص به چه روش میباشد شما را آشنا کنیم و به این نتیجه برسیم که تهیه بکاپ از لاگ فایل چقدر میتواند برای سازمان و همچنین برای کارشناس مسئول نگهداری بانک اطلاعاتی چقدر میتواند مهم و حیاتی باشد. گام اول توسط دستور زیرا بررسی میکنیم که اگر دیتابیسی از قبل با نام «NEWDB» وجود داشت حذف شود. DROP DATABASE IF EXISTS NEWDB; GO با استفاده از دستور زیر یک دیتابیس با نام «NEWDB» ایجاد میکنیم. USE master GO CREATE DATABASE NEWDB ON (NAME = NEWDB, FILENAME = 'C:\TEMP\NEWDB_DATA.mdf', SIZE = 100MB, MAXSIZE = 200MB, FILEGROWTH = 64MB) LOG ON (NAME = NEWDB_log, FILENAME = 'C:\TEMP\NEWDB_log.ldf', SIZE = 100MB, MAXSIZE = 200MB, FILEGROWTH = 64MB) GO گام دوم بعد از ساخت دیتابیس، یک جدول با نام Restore_Time ایجاد کرده و چند رکورد تستی هم در این جدول درج میکنیم. توسط دستور زیر بررسی میکنیم اگر جدولی با نام Restore_Time از قبل وجود داشته باشد حذف میکنیم. DROP TABLE IF EXISTS Restore_time با استفاده از دستور زیر جدولی با نام Restore_Time ایجاد میکنیم. USE NEWDB GO CREATE TABLE Restore_time ( F1 INT PRIMARY KEY, F2 NVARCHAR (20) ); GO گام سوم با استفاده از دستور Insert Into چند رکورد در جدول Restore_Time درج میکنیم. INSERT INTO Restore_time VALUES (1,'record_1') INSERT INTO Restore_time VALUES (2,'record_2') INSERT INTO Restore_time VALUES (3,'record_3') INSERT INTO Restore_time VALUES (4,'record_4') GO بعد ساخت جدول و درج یکسری رکورد تستی وارد جدول Restore_time کردیم حالا توسط کوئری زیر محتوا جدول Restore_time واکشی میکنیم ببینیم که چه تعداد رکورد و چه اطاعاتی داریم. SELECT * FROM Restore_time GO گام چهارم ما برای اینکه سناریو مربوط به بازیابی بانک اطلاعاتی به یک ساعت خاص، پیش ببریم باید از بانک اطاعاتی که پیش از این ساختیم یک بکاپ از نوع فول تهیه کنیم.برای این کار از کوئری زیر استفاده میکنیم. BACKUP DATABASE NEWDB TO DISK='C:\TEMP1\NEWDB.BAK' WITH NAME='FULL’, DESCRIPTION=N'Restoring to a Point in Time’, FORMAT; GO با استفاده از کوئری زیر از بانک اطلاعاتی که بکاپ گرفتید میتوانید بکاپستها (Backup set) را مشاهده کنید. RESTORE HEADERONLY FROM DISK='C:\TEMP1\NEWDB.BAK'; GO گام پنجم اکنون میخواهیم تغییراتی در جدول Restore_time انجام بدیم، بر اساس ساعتهای مختلف، و بر روی رکوردهای موجود در جدول Restore_time وجود دارد یکسری از رکوردها اطلاعاتشان را تغییر بدیم. مجموعه تغییرات اول در ساعت ۱۱ صبح: UPDATE Restore_time SET F2='*record_1_11am*' SELECT * FROM Restore_time GO مجموعه تغییرات دوم در ساعت ۱۲ ظهر: UPDATE Restore_time SET F2='*12:00_PM*' SELECT * FROM Restore_time GO مجموعه تغییرات سوم در ساعت ۱۲:۳۰ ظهر: UPDATE Restore_time SET F2='*12:30_PM*' SELECT * FROM Restore_time GO مجموعه تغییرات چهارم در ساعت ۱۳:۰۰ ظهر: UPDATE Restore_time SET F2='*13:00_PM*' SELECT * FROM Restore_time GO گام ششم بعد از تغییراتی که در ساعتهای مختلف انجام دادیم، حالا میخواهیم در ساعت ۱۳:۳۰ از لاگ فایل دیتابیس بکاپ تهیه کنیم و توسط همین لاگ فایل دیتابیس را به یک ساعت خاص بازیابی میکنیم. BACKUP LOG NEWDB TO DISK='C:\TEMP1\NEWDB.BAK' WITH NAME='LOG-13:30_PM’, DESCRIPTION=N'ساعت ۱۳:30_PM' RESTORE HEADERONLY FROM DISK='C:\TEMP1\NEWDB.BAK'; GO گام هفتم تاکنون دیتابیس ایجاد کردیم و یکسری اطلاعات هم برای جدول Restore_Time درج کردیم و در نهایت یک بکاپ از لاگ فایل گرفتیم و الان میخواهیم دیتابیس را به یک ساعت خاص بازیابی کنیم. برای این کار در گام اول باید بکاپ مربوط به فول را بازیابی کنیم و توسط دستور زیر از جدول Restore_Time اطلاعات را واکشی میکنیم که چه اطلاعاتی وجود دارد. USE master RESTORE DATABASE NEWDB_NEW FROM DISK ='C:\TEMP1\NEWDB.BAK' WITH FILE=1, STATS=5, REPLACE, STANDBY='C:\TEMP1\NEWDB.UNDO' در کوئری بالا ما دیتابیس را به نام دیگری داریم بازیابی میکنیم و به دیتابیس در حالت Read-only میباشد، و توسط کوئری زیر اطلاعات مربوط به جدول Restore_Time را واکشی میکنیم که چه اطلاعاتی وجود دارد. SELECT * FROM NEWDB..Restore_time گام هشتم بعد از بکاپ مربوط به فول را حالا میخواهیم دیتابیس به ساعت ۱۲:۴۵ دقیقه بازیابی کنیم، در ادامه کوئری مربوط به این مورد آمده است. USE master RESTORE DATABASE NEWDB_ NEW FROM DISK ='C:\TEMP1\NEWDB.BAK' WITH FILE=2, STATS=1, STANDBY='C:\TEMP1\NEWDB.UNDO' STOPAT='2021-05-31 12:45:00' GO گام نهم بعد از اینکه دیتابیس را به یک ساعت خاص بازگردانی کردیم، حالا توسط کوئری زیر دیتابیس را از حالت Read-only به حالت نرمال برمیگردانیم. RESTORE DATABASE NEWDB_ NEW FROM DISK ='C:\TEMP1\NEWDB.BAK' WITH RECOVERY GO چه رتبه ای میدهید؟ میانگین ۵ / ۵. از مجموع ۱ اولین نفر باش دانلود مقاله فرآیند بازیابی دیتابیس برای یک ساعت خاص فرمت PDF 6 صفحه حجم 1 مگابایت دانلود مقاله معرفی نویسنده مقالات 401 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده تیم فنی نیک آموز معرفی محصول مسعود طاهری دوره آموزشی نگهداری از بانکهای اطلاعاتی در SQL Server 1.180.000 تومان مقالات مرتبط ۰۲ آبان SQL Server ابزار Database Engine Tuning Advisor؛ مزایا، کاربردها و روش استفاده تیم فنی نیک آموز ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ محسن ۱۶ / ۰۳ / ۰۰ - ۰۸:۳۱ خیلی عالی پاسخ به دیدگاه