ถ้าคุณต้องการทำ warm standby server หรือ ต้องการเอา backup มา restore เพื่อเผื่อเอาไว้กรณี database จริงมีปัญหา จะได้นำเอาตัว standby server มา online เพื่อใช้งานแทนได้ทันที ก็สามารถทำดังนี้ได้ครับ
1. restore ตัว database backup ที่เป็น full
2. restore transaction log ที่ได้ backup เอาไว้ ตามลำดับไฟล์ต่อ ๆ ไปเรื่อย ๆ
แต่ database ใน warm standby server นี้ อาจจะไม่สามารถใช้งานได้ หรือ ใช้งานได้แค่ read only ซึ่งขึ้นกับ option ในการ restore ที่เลือกเอาไว้ ลองสังเกต option ในหน้าจอ restore ดูนะครับ จะมี
- leave database operational. No additinal transaction logs can be restored.
ซึ่งหมายถึง restore เสร็จแล้ว ให้ database online พร้อมใช้งานได้เลย จึงทำให้ไม่สามารถนำ log ไฟล์ต่อไปมา restore ต่อไปได้ ซึ่งก็คือ with recovery หรือ
- leave database nonoperational but able to restore additinal transaction logs
หมายถึง restore แล้ว ยังไม่ online ให้ รอเอา transaction log backup ตัวต่อ ๆ ไปมา restore ต่อ ซึ่งก็คือ with norecovery หรือ
- leave database read-only and able to restore additinal transaction logs
หมายถึง restore แล้ว ให้ read-only และ รอเอา transaction log backup ตัวต่อ ๆ ไปมา restore ต่อได้ ซึ่งก็คือ with standby
ดัง นั้น ถ้าจะ restore transaction log ต่อ ๆ กัน หลาย ๆ ไฟล์แล้ว เลือกได้แค่ option 2 หรือ 3 นะครับ จนถึงครั้งที่ restore transaction log ตัวสุดท้ายแล้ว จึงค่อยเลือก option ที่ 1 เพื่อให้ databae online กลับเข้ามา
ดูคำสั่งที่เป็น command line นะครับ สมมติว่ามี backup เช่น
1. nwind_tlog1400.trn เวลา 14.00 น.
2. nwind_fullbackup.bak เวลา 15.00 น.
3. nwind_tlog1600.trn เวลา 16.00 น.
4. nwind_tlog1800.trn เวลา 18.00 น.
5. nwind_tlog2000.trn เวลา 20.00 น.
การเอา backup เหล่านี้ มา restore เพื่อใช้เป็นตัวทดสอบ หรือ จะใช้เป็น standby server ก็แล้วแต่สามารถทำได้ดังนี้
1. restore ตัว full ก่อน โดย
restore database NorthWind
from disk = 'c:\nwind_fullbackup.bak'
with norecovery -- <-- with norecovery เพราะจะ restore transaction log ต่อ
go
2. restore transaction log backups ต่อ ๆ ไป
restore log Northwind
from disk = 'c:\nwind_tlog1600.trn'
with norecovery -- <-- with norecovery เพราะจะ restore transaction log ต่อ
go
restore log Northwind
from disk = 'c:\nwind_tlog1800.trn'
with norecovery -- <-- with norecovery เพราะจะ restore transaction log ต่อ
go
restore log Northwind
from disk = 'c:\nwind_tlog2000.trn'
with recovery -- <-- with recovery แล้ว เพื่อให้กลับมา online
go
( หมายเหตุ คำสั่งยังไม่ได้ test นะครับ ขอโทษที )
จะ เห็นว่าในการ restore transaction log backup ครั้งสุดท้าย จะต้องใช้ option with recovery เพื่อนำ database ให้กลับมา online พร้อมใช้งาน ลองสังเกตตัวก้อน database หลังจากที่ restore แต่ะลขั้นนะครับ มันจะยังเป็นสีเทาอยู่ จนขั้นตอนสุดท้าย
* สำหรับ การนำเอา transaction log backup มา restore ต่อ ๆ กันไป เพื่อให้ได้ warm standby server นั้น นอกจากใช้ with norecovery ตามตัวอย่างแล้ว ยังสามารถเลือกใช้ option with standby ก็ได้ ซึ่งข้อดีของ option with standby ก็คือ ตัว warm standby server นี้จะเป็น read only ซึ่งอาจจะนำไปใช้งานในการ run report ที่ไม่ต้องการข้อมูล update แบบ realtime ได้
( เรื่อง with standby จะมีรายละเอียดเกี่ยวกับ undo file อีกนิดหน่อย ดูเพิ่มได้จาก book online )
** หลักการทั้งหมดนี้ จะคล้ายกับ feature หนึ่ง ของ SQL Server Enterprise Edition ที่เรียกว่า log shipping ซึ่งก็คือ การ synchronize database ปลายทาง ให้เหมือนกับ database ต้นทาง โดยวิธีการส่ง transaction log ไปยังปลายทาง สำหรับรายละเอียดวิธีการ config สามารถอ่านเพิ่มเติมได้จาก book online ครับ
*** ใน SQL2000 Resource Kit จะมี ตัวอย่างหนึ่ง เรียกว่า Simple Log Shipper (SLS) ซึ่งจะมีรายละเอียด พร้อม stored procedure มาให้พร้อมใช้งานสำหรับกรณีที่คล้าย ๆ กับที่เป็นตัวอย่างข้างต้นนี้ เพื่อทำ warm standby server ที่เป็นแบบ read-only