SQL Server Snapshot

دسته بندی: آموزش
آموزش SQL Server Snapshot

یکی از قابلیت‌های SQL Server ویژگی Snapshot گرفتن از Database (پایگاه داده)‌ است. همانطور که از اسم آن نیز پیداست Snapshot به‌معنی image گرفتن از پایگاه داده می‌باشد. Snapshot پایگاه داده، viewای از پایگاه داده اصلی در زمانی‌که Snapshot ایجاد شده است را نمایش می‌دهد، بدین معنی که کلیه objectها و داده‌ها با زمانی‌که Snapshot گرفته شده‌است یکسان خواهد بود.

Snapshot به‌صورت فقط خواندنی است و یک پایگاه داده می‌تواند شامل چندین Snapshot باشد. با استفاده از Snapshot در زمان‌های لازم می‌توانید تغییرات را به حالت قبل (در زمانی‌که Snapshot به‌روز شده‌است) بازگردانی نمائید. امکان حذف پایگاه داده اصلی تا زمانی‌که Snapshotها فعال باشند وجود ندارد و ابتدا باید آن‌ها را حذف نمود.

Snapshotها وابسته به پایگاه داده هستند و به پایگاه داده اصلی اشاره می‌کنند؛ این امکان وجود دارد که فایل بک‌آپ پایگاه داده را به محل دیگری (سیستم مجزایی) منتقل نمود اما Snapshotها را نمی‌توان از پایگاه داده اصلی جدا نمود.

مزیت استفاده از Snapshot سرعت بالای آن در هنگام ایجاد، بازگردانی و اِشغال فضای کمتر می‌باشد. ویژگی بارز Snapshot این است که Client می‌تواند پس از ایجاد بر روی آن Query (کوئری) اجرا کند و مانند فایل بک‌آپ نیاز به ایجاد یک پایگاه داده مجزا و بازگردانی بک‌آپ برروی پایگاه داده ایجاد شده ندارد؛ این یکی از مهم‌ترین دلایل برای اضافه نمودن این قابلیت توسط تیم توسعه دهنده  SQL Server بوده‌است.

کاربرد Snapshot:

به‌عنوان نمونه می‌توان به کاربردهای زیر جهت ایجاد Snapshot اشاره نمود:

  • Snapshotها می‌توانند برای اهداف گزارش گیری استفاده شوند. Clientها می‌توانند با کوئری گرفتن از Snapshotها از داده‌های پایگاه داده در فواصل زمان‌هایی که Snapshotها ایجاد شده‌اند گزارش تهیه کنند.
  • حفظ داده‌های تاریخی برای تولید گزارش.
  • حفاظت از داده‌ها در برابر خطاهای اجرایی.
  • در صورت خطای کاربری در Source پایگاه داده با استفاده از Snapshot گرفته شده می‌توان تغییرات را به زمان ایجاد Snapshot بازگرداند.
  • جهت تست صحت عملکرد پایگاه داده.

 آموزش کار با Snapshot:

برای درک بهتر مراحل را با یک مثال توضیح خواهم داد.

ابتدا یک پایگاه داده به‌عنوان نمونه با یک Table (جدول) که دارای داده‌های آزمایشی باشد ایجاد می‌کنیم:

USE master
GO
CREATE DATABASE TestDB
GO
USE TestDB
GO
-- Populate Regular Database with Sample Table
CREATE TABLE TestTable (ID INT, Value VARCHAR(10))
INSERT INTO TestTable VALUES(1, 'First');
INSERT INTO TestTable VALUES(2, 'Second');
INSERT INTO TestTable VALUES(3, 'Third');
GO

ایجاد snapshot:

به‌صورت زیر می‌توانید از پایگاه داده در حالت فعلی Snapshot بگیرید:

-- Create Snapshot Database
CREATE DATABASE SnapshotDB ON
(Name = TestDB,
FileName='c:\SSDB.ss1')
AS SNAPSHOT OF TestDB;
GO

حال محتوی جدول در پایگاه داده اصلی و Snapshot را به کمک دستورات زیر مشاهده کنید:

-- Select from Regular and Snapshot Database
SELECT * FROM TestDB.dbo.Testtable;
SELECT * FROM SnapshotDB.dbo.Testtable;
GO
محتوی جدول در پایگاه داده اصلی و Snapshot
محتوی جدول در پایگاه داده اصلی و Snapshot به کمک دستور فوق

سپس داده‌های ایجاد شده در جدول را از پایگاه داده TestDB به کمک دستورات زیر حذف می‌کنیم:

-- Delete from Regular Database
DELETE FROM TestDB.dbo.TestTable;
GO

مجدد محتوی جداول را مشاهده کنید، خروجی مشابه تصویر زیر خواهد بود.

SQL Server Snapshot

بازگردانی داده به کمک snapshot:

می‌توانید به کمک Snapshot داده‌های حذف شده را به پایگاه داده اصلی بازگردانی کنید؛ برای این منظور می‌توانید از دستورات زیر استفاده کنید:

-- Restore Data from Snapshot Database
USE master
GO
RESTORE DATABASE TestDB
FROM DATABASE_SNAPSHOT = 'SnapshotDB';
GO
-- Select from Regular and Snapshot Database
SELECT * FROM TestDB.dbo.TestTable;
SELECT * FROM SnapshotDB.dbo. TestTable;
GO
بازگردانی داده به کمک snapshot
بازگردانی داده به کمک snapshot

 حذف snapshot:

جهت حذف Snapshot می‌توانید از دستورات زیر استفاده کنید.

-- Clean up
DROP DATABASE [SnapshotDB];
GO
2/5 - (1 امتیاز)

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

ساخت Swap File در لینوکس

راهنمای ساخت و حذف Swap File در لینوکس

0
Swap File نجات‌دهنده آبروی RAM جلوی کاربر است؛ فایل سیستم کوچکی که هنگام کم آوردن حافظه RAM، وارد صحنه شده و مسئولیت ذخیره داده‌ها را…

نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست