Sunday, July 6, 2008

Backup & Restore SQL Server 2005 with .bak

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

No comments:

Post a Comment