(قبل از هر چیزی بخاطر تاخیر به وجود آمده از همه دوستان عذرخواهی میکنم)
Restore كردن دیتابیس
Restore كردن دیتابیس يعني بازسازي دیتابیس از Backup File
هر فايل Backup به صورت زير تشكيل شده است :
- اطلاعات در مورد Backup و اطلاعات كلي در مورد Database كه در Header فايل Backup ايجاد مي شود اين اطلاعات شامل:
- Name : نام Backup Set
- Component : عناوين Backup Component مانند Database , File و براي Null , Transaction Log مي باشد.
- Type : نوع Backup مانند Full , Deferential , Transaction Log
- Server : نام Server ايي كه دیتابیس روي آن قراردارد.
- Database : نام دیتابیسی كه از آن Backup تهيه شده است.
- Position : محل قرار كرفتن Backup set روي Diskها مي باشد.
- First LSN : شماره اولين Transaction Log در Backup Set مي باشد.
- Last LSN : شماره آخرين Transaction Log در Backup Set مي باشد.
- Checkpoint LSN : شماره آخرين Transaction Log ايي كه روي Checkpoint زده شده باشد.
- و ساير طلاعات ديگر.
در زمان Restore شدن دیتابیس ابتدا اين اطلاعات از Header خوانده شده و جنانجه براي Restore مشكلي نباشد ، از روي ساير اطلاعات فايلهاي دیتابیس را ايجاد شده و پس از عمل Recovery Database بازيابي مي شود.
براي آنكه از اطلاعات درون يك Backup File را ببينيم از دستور زير مي توان استفاده نمود
RESTORE FILELISTONLY
FROM <DISK , DEVICE> = <Backup File Path , Device Name>
و يا در زمان Restore در قسمت Option اطلاعات Header را مي توان مشاهده نمود.
براي Restore كردن دیتابیس بصورت زير عمل مي كنيم :
و سپس
1 - محل نوشتن نام دیتابیس
2 - Restore كردن دیتابیس در زمان مشخص(براي Restore كردن Transaction Log در تاريخ و زمان مشخص)
براي بازيابي دیتابیس ميتوان از دو موقعيت استفاده كرد.
3 - From Database : در اين Option امكان بازيابي دیتابیس از تاريخچه Backup هاي تهيه شده قبلي وجود دارد. اين تاريخچه در Database MSDB مي باشد. تا زمان Restore شدن مجدد دیتابیس اين تاريخچه كاملتر مي شود. در اين تاريخچه Backup ها با توجه به نوع Backup ها مشخص شده و اين Option از هوشمندي خاصي در زمان بازيابي ازاطلاعات برخوردارد است.
4 - From Device : امكان بازيابي دیتابیس از طريق Backup Device با (Backup File (Path امكان پذير مي باشد.
براي استفاده از اين امكان روی دکمه .... کلیک نمایید:
همانطور كه مشاهده مي شود از دو موقعيت File , Backup Device ميتوان دیتابیس را Restore كرد .با انتخاب گزينه ADD در مورد فايل ميتوان آدرس مربوط به فايل Backup را پيدا كرد و مي توان مسير فايل را مشخص كرد.
نكته:
نوع فايل بصورت پيش Bak.* و Trn.* مي باشد.
و در صورتي كه از Device استفاده نماييم :
مي توان از ليست مربوط به Backup Device ها استفاده كرد تا دیتابیس را Restore كرد.
5 - ليست Backup هاي قابل دسترس را مي توان مشاهده كرد. چنانچه از Backup Device استفاده كنيم ، ليست Backup هاي موجود در Backup Device را مي توان مشاهده كرد.
نكته :
براي Restore كردن دیتابیس حتما بايستي Backup مورد نظر را انتخاب كرد.
در Option موارد زير را مي توان مشاهده كرد.
1 - چنانچه بخواهيم Backup يك دیتابیس را روي دیتابیس موجود Restore كنيم بايستي روي دیتابیس موجود Overwrite كنيم . براي اين كار از اين گزينه استفاده مي نماييم.
2 - در زمانيكه دیتابیس شامل Replication باشد . براي Restore كردن آن بايستي از اين آيتم براي Restore كردن آن استفاده شود.
3 - براي زمانيكه بخواهيم دیتابیس ها را بطور متوالي Restore كنيم ، قبل از هر بار Restore از كاربر تاييديه مي گيرد.
4 - دیتابیس را در حالتي Restore مي كند كه دیتابیس با دسترسي هاي محدود مثلا Read Only يا Single User بازيابي شود.
5 - در اين جدول اطلاعات مربوط به Header فايل Backup را نمايش مي دهد. در اين جدول اگر بخواهيم مسير دیتابیس را عوض كنيم مي توانيم در قسمت Restore As مسير را به مسير جديد تغيير دهيم.
6 - در زمان Restore كردن دیتابیس ، چنانچه بخواهيم پس از Restore شدن دیتابیس بصورت عملياتي در اختيار كاربران قرار بگيرد از اين گزينه استفاده مي نماييم . توجه داشته باشيد در زمان بازيابي دیتابیس از روي Log File ، چنانچه از اين گزينه استفاده نماييم ، امكان Restore كردن Log File هاي ديگر را نداريم و دیتابیس بصورت عملياتي در اختيار كاربر قرار مي گيرد.
7 - در اين گزينه به عكس 6 اين قابليت وجود دارد تا پس از Restore كردن دیتابیس Transaction Log روي دیتابیس Restore شود . در اين حين دیتابیس بصورت عير عملياتي و با نماد Loading نمايش داده مي شود و هيچ كاربري نمي تواند با آن كار كند.
8 - در اين حالت شبه 7 عمل مي شود و فقط بجاي غير عملياتي بودن ، دیتابیس بصورت Read Only در اختيار كاربر قرار مي گيرد . امكان Restore كردن دیتابیس هاي ديگر نيز وجود دارد . در اين گزينه اين امكان وجود دارد تا با استفاده از Undo File عمل Restore كردن Transaction Log ها را كنترل كنيم.
Restore كردن دیتابیس با استفاده از T-SQL
RESTORE DATABASE { database_name | @database_name_var }
[ FROM <backup_device> [ ,...n ] ]
[ WITH
[ { CHECKSUM | NO_CHECKSUM } ]
[ [ , ] { CONTINUE_AFTER_ERROR | STOP_ON_ERROR } ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] MOVE 'logical_file_name' TO
'operating_system_file_name'
][,...n ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] { RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
} ]
[ [ , ] REPLACE ]
[ [ , ] RESTRICTED_USER ]
]
با استفاده از دستورات مانند Backup گيري مي توان از امكانات بيشتري در زمان Restore استفاده كرد .
در اينجا به تعدادي از Switch هاي مهم اشاره مي نماييم :
CHECKSUM | NO_CHECKSUM:
CHECKSUM در زمان Restore كردن دیتابیس ، ساختار دیتابیس را مورد بررسي قرار داده و چنانچه دیتابیس از نظر ساختاري مشكلي باشد Restore را متوفق كند.
KEEP_REPLICATION
در زمان Restore تنظيمات مربوط به Replication را حفظ كند
MOVE 'logical_file_name' TO
'operating_system_file_name'
در زمان Restore مي توان با كمك اين Switch ميسر فيزيكي فايلهاي دیتابیس را عوض كرد.
REPLACE
هم مفهوم با Force Restore over existing Database مي باشد.
RECOVERY | NORECOVERY | STANDBY
RECOVERY : براي Restore كردن Log File اجازه مي دهد تا پس از Restore كردن ، Log هاي بعدي روي دیتابیس خوانده شود و دیتابیس در وضعيت غير عملياتي قرار مي گيرد.
NORECOVERY : پس از Restore كردن Log File امكان بازيابي Log هاي بعدي وجود ندارد و دیتابیس در وضعيت عملياتي قرار مي گيرد .
STANDBY : پس از بازيابي دیتابیس امكان بازيابي Transaction Log وجود دارد ولي دیتابیس در وضعيت Read Only قرار مي گيرد.