backup และ restore ผ่าน management studio 2005 กับไฟล์ .bak# อันเนี๋ยเป็นการ backup และ restore ผ่านไฟล์ .bak ซึ่งเป็นทางเลือกหนึ่งนะ
# เราจะทำการผ่านโปรแกรม Management Studio 2005 ได้ดังนี้
Backuping ^^' เขียนมั่วไปเรื่อย
# คลิกขวาที่ Database ก้อนที่เราต้องการสำรองข้อมูลเลือก Tasks => Back Up...
# ที่กรอบ Destination เลือกที่เก็บไฟล์ที่เราทำการสำรองโดยคลิก Add
# เลือกพาธไฟล์ ตามด้วยตั้งชื่อไฟล์ ใส่ .bak ตามด้วย กด Ok
# ถ้ามีไฟล์ backup ที่เคยทำไว้แล้วเราสามารถตั้งค่าให้การ backup ครั้งนี้เป็นการเพิ่ม หรือ ทับไฟล์ backup เดิม
# โดยที่กรอบด้านซ้ายให้เราเลือก Option ส่วนทางขวาก็เลือกตามความต้องการว่า จะเพิ่ม หรือ จะทับ
# จากนั้นก็กด Ok เป็นอันเสร็จสิ้นการ backup ไฟล์ .bak จะไปอยู่พาธที่เราได้เลือกและตั้งชื่อไฟล์
# ถ้ามีปัญหา backup แล้ว error อาไรประมาณนั้น พยายามอ่าน error มันหน่อยนะ
Restoring# จากที่เคยทำขอแบ่งเป็นสองแบบนะ อันนี้ไม่ได้อ่านจากที่ใหนอ่ะแต่ แบ่งเอง โมเมเอาเองอ่ะนะ ;p
1. restore กลับก้อนเดิม
2. สร้างก้อนใหม่แล้ว restore ใส่ก้อนใหม่ มันก็คล้ายกับการสร้างก้อนใหม่จากก้อนเดิมอาไรประมาณนั้น
# คลิกขวาที่ Databases ที่ต้องการ restore ข้อมูลใส่่ Tasks => Restore => Database...
# To database: จะปรากฏชื่อ database ที่เราได้เลือกเมื่อตะกี้ไง ซึ่งสามารถเปลี่ยนเป็นก้อนอื่นได้นะ
# Source for restore เลือกไฟล์ต้นทางซึ่งก็คือ ไฟล์ที่เราทำการสำรองไว้แล้ว
# From device: จะเป็นการเลือกไฟล์ตามที่เราได้ทำในขั้นตอน backup ไฟล์.bak
# From database: นั้นมันจะให้ค้นหาไฟล์ .bak เองนะ
# ในที่นี้ขอเลือกเป็น From device ดีกว่าชัวร์กว่า จากนั้น คลิกปุ่มด้านขวาสุดเห็นปะ ... อ่ะ
# คลิกที่ Add สิครับ
# จากนั้นก็ค้นหาไฟล์ .bak คือไปย้ง พาธที่เราได้ทำการสร้าง .bak ไว้ไง ทิปนิดหนึ่งคือ ตอนเรา backup ถ้าเราไม่ใส่นามสกุลให้เค้า เมือเราค้นหา .bak เพื่อ restore จะไม่พบไฟล์นะ เราก็ไป rename ใส่ .bak ให้เค้าแล้วทำการค้นหาไฟล์ใหม่ก็จะเจอเอง ไม่ต้อง backup ใหม่อ่ะ
# ที่กรอบ Select the backup sets to restore: ทำไมมี สองอันล่ะทีนี้จะเลือกอันบนอันล่างดีอ่ะ เราเลือก อันล่างครับ เป็นข้อมูลที่ได้ทำการ backup ล่าสุดอ่ะ คือ ไฟล์ .bak เนี๋ยตอนทำการ backup ได้ทำการตั้งค่าให้เป็นแบบ append ทำให้มีข้อมูลเดิม และ ข้อมุลใหม่ อยู่ในก้อนเดียว
# Original file name คือ บอกว่าไฟล์ฐานข้อมูลต้นฉบับที่ได้ทำการ backup มาชื่อว่าอะไร
# Restore As เป็นการกำหนดพาธของ .mdf กับ ldf ว่าจะวางไว้ทีใหนดี
# ถ้าเป็นการสร้าง ฐานข้อมูลก้อนใหม่ขึ้นมา แล้ว restore ข้อมูลมาจากไฟล์ .bak ของอีกก้อนหนึ่งเราควรตั้งค่า Restore As ให้เหมือนกับชื่อ database ก้อนใหม่ที่เราได้ตั้งขึ้นนะ ไม่งั้นคิดว่าถ้าเราไม่เปลี่ยนค่า Restore As จะเป็นการ restore ไปทับไฟล์ .mdf และ ldf ของก้อนเดิมนะ
สมมุติว่า:# ฐานข้อมูลก้อนแรกชื่อ a ฐานข้อมูลก้อนนี้จะมีไฟล์ชื่อ a.mdf และ a_log.ldf เป็นที่เก็บข้อมูลจริงๆอยู่
# เมื่อเราจะทำการสร้างฐานข้อมูลอีกก้อนซึ่งจะเอาข้อมูลทั้งหมดจาก a มาใส่ สมมุติให้ก้อนใหม่ชื่อ b
# เมื่อเราทำการสร้างก้อน b ขึ้นมา ก็จะได้ไฟล์ b.mdf และ b_log.ldf มาด้วย
# เมื่อเราทำ backup ก้อน a เป็น a.bak
# ทำการ restore ข้อมูล a.bak ใส่ b ถ้าเราไม่เปลี่ยน Restore As ไฟล์เป็น b.mdf และ b_log.ldf ซึ่งค่าตามพาธนั้นจะเป็น a.mdf และ a_log.ldf อยู่ก็จะขึ้น error ดังภาพ
# แต่ถ้าเราพยายาม overwrite ตามที่ error บอกให้ทำก็จะเป็นการ restore ให้ก้อน a ซะงั้น ซึ่ง b ก็จะว่างป่าวเหมือนเดิม ^^'
# ถ้าเป็นงั้นเมื่อเรา restore จาก a.bak มาใส่ b เราต้องตั้ง Restore As เป็น b.mdf และ b_log.ldf
# และ เราต้องเลือก Overwrite ด้วยเพราะถ้าไม่เลือกจะ restore ไม่ได้นะ เพราะ b.mdf และ b_log.ldf มีอยู่แล้ว
# จากนั้นก็คลิก Ok จบครับพี่น้อง
# ถ้า restore ไม่ได้ขึ้นประมาณว่า database in use ให้เราทำการ restart sql server หน่อยเพื่อทำลาย connection ทุก session เลย แล้วลองอีกครั้ง
Notes:- ขอบคุณ เพื่อน koi ที่ช่วยแนะนำวิธีนี้
- อีกทางคือ ทำการ backup และ restore ผ่านไฟล์ .mdf และ ldf โดยตรงเลยซึ่งเห็นเพื่อน atom ทำบ่อย
Reference