تا %60 تخفیف خرید برای 8 نفر با صدور مدرک فقط تا
00 00 00
در توسینسو تدریس کنید

آموزش Snapshot گرفتن از SQL سرور قسمت 2 : استفاده از Snapshot

در مقاله قبلی در خصوص اینکه Snapshot در SQL سرور چیست و چگونه کار می کند صحبت کردیم در این قسمت می خواهیم به شما آموزش دهیم که چگونه بصورت عملی از Database های خود Snapshot بگیرید و داده ای را حذف و از طریق Snapshot آنرا بازیابی کنید. خوب بیابید با مثالی Snapshot را به خوبی یاد بگیریم. توجه کنید که این مثال فعلا در محیط تست و پایلوت قابل اجرا است و در محیط واقعی کمی بار کاری بر ریو CPU و دیسک و حافظه شما ایجاد خواهد شد ، در این خصوص که چگونه این مشکلات در محیط واقعی باید حل شوند بعد ها صحبت خواهیم کرد ، سناریو به این شکل خواهد بود :

  • یک Database ایجاد می کنیم
  • از این Database داده ای را حذف می کنیم
  • از طریق Snapshot داده مربوطه را بازیابی می کنیم

در اولین مرحله یک Database را با استفاده از دستورات زیر به همراه یک سری داده های آزمایشی ایجاد می کنیم ، در محیط واقعی قاعدتا شما دارای Database می باشید و نیازی به ایجاد کردن آن ندارید نام Database را در اینجا RegularDB قرار می دهیم و چند Table نیز به آن اضافه می کنیم و در نهایت همانطور که در توضیحات دستورات T-SQL هم مشاهده می کنید Snapshot را ایجاد می کنیم :

USE master
GO
-- Create Regular Database
CREATE DATABASE RegularDB
GO
USE RegularDB
GO
-- Populate Regular Database with Sample Table
CREATE TABLE FirstTable (ID INT, Value VARCHAR(10))
INSERT INTO FirstTable VALUES(1, 'First');
INSERT INTO FirstTable VALUES(2, 'Second');
INSERT INTO FirstTable VALUES(3, 'Third');
GO
-- Create Snapshot Database
CREATE DATABASE SnapshotDB ON
(Name ='RegularDB',
FileName='c:\SSDB.ss1')
AS SNAPSHOT OF RegularDB;
GO
-- Select from Regular and Snapshot Database
SELECT * FROM RegularDB.dbo.FirstTable;
SELECT * FROM SnapshotDB.dbo.FirstTable;
GO

بعد از اینکه Table های فرضی را ایجاد کردیم از Database اصلی یک سری داده را با استفاده از دستور زیر حذف می کنیم :

-- Delete from Regular Database
DELETE FROM RegularDB.dbo.FirstTable;
GO
-- Select from Regular and Snapshot Database
SELECT * FROM RegularDB.dbo.FirstTable;
SELECT * FROM SnapshotDB.dbo.FirstTable;
GO

زمانیکه شما دستور بالا برای حذف داده ها از Database را وارد کردید ابتدا و قبل از حذف داده ها در Snapshot کپی می شوند. البته دقت کنید که داده ها در سطح Page ها کپی خواهند شد. قبل از حذف داده ها فایل Snapshot ظرفیت چندانی نخواهد داشت اما بعد از حذف به دلیل اینکه ابتدا در Snapshot کپی شده و بعد حذف می شود حجم فایل Snapshot ما بالا خواهد رفت. حالا با استفاده از دستورات زیر داده ای که حذف کرده ایم را Restore یا بازیابی می کنیم. قاعدتا در این قسمت از Snapshot برای بازگردانی داده ها استفاده خواهیم کرد :

-- Restore Data from Snapshot Database
USE master
GO
RESTORE DATABASE RegularDB
FROM DATABASE_SNAPSHOT = 'SnapshotDB';
GO
-- Select from Regular and Snapshot Database
SELECT * FROM RegularDB.dbo.FirstTable;
SELECT * FROM SnapshotDB.dbo.FirstTable;
GO
-- Clean up
DROP DATABASE [SnapshotDB];
DROP DATABASE [RegularDB];
GO

خوب در این مرحله اگر به Database اصلی مراجعه کنید متوجه می شوید که FirstTable را که حذف کرده بودیم با استفاده از Snapshot بازیابی شده است ، امیدوارم مورد توجه شما قرار گرفته باشد. ITPRO باشید.

نویسنده : محمد نصیری

منبع : جزیره بانک های اطلاعات وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

نظر شما
برای ارسال نظر باید وارد شوید.
1 نظر
افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند