۳.۸
(۴)

آشنایی با Database Snapshot، شاید در دنیای واقعی بازگشت به زمان عقب وجود نداشته باشد اما این عمل با نرم افزارها امکانپذیر است در اصل Snapshot به مفهوم عکس گرفتن است. شما در SQL می‌توانید یک Snapshot از Database خود تهیه کنید و هر زمان که لازم شد به آن زمان عقب گرد کنید.

آشنایی با Database Snapshot

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

مراحل ساخت Snapshot

ساخت یک دیتابیس و جداول

USE master
CREATE DATABASE TEST
USE TEST
CREATE TABLE Student(ID INT,Name VARCHAR(15),SECTION CHAR(1))
INSERT INTO Student VALUES
(۱,'Keshav','A'),
(۲,'Sachin','B'),
(۳,'Rahul','C')
SELECT * FROM dbo.Student
 

ID Name  SECTION----------- --------------- -------1   Keshav    A2   Sachin
B3   Rahul  C(3 row(s) affected)

با استفاد از T-SQL زیر می توانید اطلاعات سایز فایل را مشاهده نمایید. شما می‌توانید کوئری نویسی را به صورت گام‌به‌گام از نیک آموز فرا بگیرید. 

USE TEST
EXEC sp_spaceused
database_name     database_size   unallocated space -----------------  ------------------TEST
۱.۸۷ MB  ۰.۱۱ MBreserved  data    index_size    unused------------------ ------------------
۱۲۹۶ KB   ۵۱۲ KB     ۶۴۰ KB   ۱۴۴ KB

ساخت Snapshot برای دیتای ایجاد شده و مشاهده اطلاعات سایز فایل:

USE master
CREATE DATABASE TEST_SS
ON
(NAME=TEST,
FILENAME='C:Program FilesMicrosoft SQL Server
MSSQL10_50.MSSQLSERVERMSSQLDATATEST_SS.ss'
)
AS SNAPSHOT OF TEST
USE TEST_SS
EXEC sp_spaceused
database_name     database_size   unallocated space  ------------------TEST_SS
۱.۸۷ MB        ۰.۱۱ MBreserved           data
index_size   unused------------------  ------------------۱۲۹۶ KB
۵۱۲ KB             ۶۴۰ KB             ۱۴۴ KB

حال با درج چند رکورد میزان فضای Snapshot را بررسی میکنیم.

USE TEST
INSERT INTO Student VALUES
(۴,'Rohit','A'),
(۵,'Saumya','B')
Now if we query the snapshot:
USE TEST_SS
SELECT * FROM dbo.Student
نکته: ساختار Snapshot بصورت Read-Only است.
UPDATE TEST_SS.dbo.Student SET Name='XXX'
WHERE ID=1
 Msg 3906, Level 16, State 1, Line 1Failed to update database
 "TEST_SS" because the database is read-only.

امکان حدف دیتا اصلی وجود ندارد بایستی ابتدا Snapshot را حذف کنید. افراد علاقه‌مند می‌توانند با مطالعه مقاله پرکاربردترین دستورات SQL Server، دانش خود را در زمینه کوئری‌نویسی گسترش دهند.

 DROP DATABASE TEST
Msg 3709, Level 16, State 2, Line 1Cannot drop the database while the database snapshot
"TEST_SS" refers to it. Drop that database first.

Snapshot ایجاد شده را میتوان Restore کرد.

USE master
RESTORE DATABASE TEST
FROM DATABASE_SNAPSHOT = 'TEST_SS'

سخن پایانی

در آشنایی با Database Snapshot در SQL Server یک ویژگی است که به شما امکان می‌دهد یک نسخه‌ی ثابت و فقط خواندنی از پایگاه داده‌ی خود ایجاد کنید. این Snapshotها به شما اجازه می‌دهند تا وضعیت پایگاه داده را در یک زمان خاص ذخیره کنید و بعداً به آن بازگردید. این ویژگی برای اهداف مختلفی مانند گزارش‌گیری، تست و بازیابی داده‌ها بسیار مفید است. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم.

 

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

میانگین ۳.۸ / ۵. از مجموع ۴

اولین نفر باش