فرآیند بازیابی دیتابیس برای یک ساعت خاص

فرآیند بازیابی دیتابیس برای یک ساعت خاص

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۱۲ خرداد ۱۴۰۰
آخرین بروزرسانی: ۲۲ شهریور ۱۴۰۲
زمان مطالعه: 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'ساعت ۱۳:۳۰_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

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۱

اولین نفر باش

title sign
دانلود مقاله
فرآیند بازیابی دیتابیس برای یک ساعت خاص
فرمت PDF
6 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
278 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
پروفایل نویسنده
title sign
دیدگاه کاربران

هر روز یک ایمیل، هر روز یک درس
آموزش SQL Server بصورت رایگان
همین حالا فرم زیر را تکمیل کنید
دانلود رایگان جلسه اول
نیک آموز علاوه بر آموزش، پروژه‌های بزرگ در حوزه هوش تجاری و دیتا انجام می‌دهد.
close-link