backup และ restore ผ่าน management studio 2005 กับไฟล์ .bak# อันเนี๋ยเป็นการ backup และ restore ผ่านไฟล์ .bak ซึ่งเป็นทางเลือกหนึ่งนะ
# เราจะทำการผ่านโปรแกรม Management Studio 2005 ได้ดังนี้
Backuping ^^' เขียนมั่วไปเรื่อย
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9N6cbKmUoLs9PzUrzmlt5hCesb2k_lMRJI1MlF_SaM_9T5yMgM4ZP33TdNr5fmgDIUNicEkhA_v-4hjZuARCWiQB9RqlSqo1c4QN8nqJxNdMRu9ARGdgv7tMYwagcTu1GbzXH/s280/1.PNG)
# คลิกขวาที่ Database ก้อนที่เราต้องการสำรองข้อมูลเลือก Tasks => Back Up...
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGP7fReWhhgda3EWeTrbsf2MNly010AuL82DFvWBG8ZsJivYW9iEHum83MOCt82xv9eEOH_muN7ZIeO5wd235tDVVLYt8RaEIzyHaIFFTk7lvINnAQxAFWAvVY5BeQyeWgTz4U/s280/sshot-2+copy.png)
# ที่กรอบ Destination เลือกที่เก็บไฟล์ที่เราทำการสำรองโดยคลิก Add
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR_bARTm0GNqXNAfcr7O1KciMko3o7CUF26-AvKqNYjl9diTa3N8UZDVLzBLjqylFfWNalEgl95XhpMH_Qg42VPYbXfD2A4BPQAoIQWRwjwfXdQQbVU2QClZqcNG3QuJY4Nhqj/s280/sshot-4+copy.png)
# เลือกพาธไฟล์ ตามด้วยตั้งชื่อไฟล์ ใส่ .bak ตามด้วย กด Ok
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht6xyaVwLPngSh5iplZv949jPr0FljxJo2L_Qwz4PoTde-lv1o4S2Mqg58hPRwmF-TqySeFuLeri9ZBuTjNUUEymIUunTlXM9GO61NQehg8wfOm-IebLoHGzS_wK37XVlcFkM6lQ/s280/sshot-1+copy.png)
# ถ้ามีไฟล์ backup ที่เคยทำไว้แล้วเราสามารถตั้งค่าให้การ backup ครั้งนี้เป็นการเพิ่ม หรือ ทับไฟล์ backup เดิม
# โดยที่กรอบด้านซ้ายให้เราเลือก Option ส่วนทางขวาก็เลือกตามความต้องการว่า จะเพิ่ม หรือ จะทับ
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUWDPWaFd64DO7yQxROnwJhmTmIQxCZmTbCouNXkWRlb_UnokTulmX1FX58io4WaxxdsaPfS_gnP7R5q5G4RCPpch5tlvGvJJrzQVlIS3ixkMzW-2nPd0Q9Uv86sjX_jQ28Bejdg/s280/sshot-5.png)
# จากนั้นก็กด Ok เป็นอันเสร็จสิ้นการ backup ไฟล์ .bak จะไปอยู่พาธที่เราได้เลือกและตั้งชื่อไฟล์
# ถ้ามีปัญหา backup แล้ว error อาไรประมาณนั้น พยายามอ่าน error มันหน่อยนะ
Restoring# จากที่เคยทำขอแบ่งเป็นสองแบบนะ อันนี้ไม่ได้อ่านจากที่ใหนอ่ะแต่ แบ่งเอง โมเมเอาเองอ่ะนะ ;p
1. restore กลับก้อนเดิม
2. สร้างก้อนใหม่แล้ว restore ใส่ก้อนใหม่ มันก็คล้ายกับการสร้างก้อนใหม่จากก้อนเดิมอาไรประมาณนั้น
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYxy9sSQB9lvNAfamOvyGp1TSlrqSXgXposZrJd62PnDeZeRB0Ftd15M54MwK3K5zSVxjtzuOrVe63LN4fpe7r_by5jEiinCnIwZILSkHVnwWXzBhEt3MRNLA6agAr8jfG5Dr_kQ/s280/2.PNG)
# คลิกขวาที่ Databases ที่ต้องการ restore ข้อมูลใส่่ Tasks => Restore => Database...
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWL0QGK1BOfEo0tNyklwxKD1qcpIQk4WLw0LFjXz-WN2_6QzhbmwPctUjrw2sP1h2691Yk_oEaD1AS7KQ2sbZYjuYkzpF4q_EhPb3EVuT9tnVmOYxFoTg0cQCf5i-lukDV1ASqgQ/s280/3+copy.png)
# To database: จะปรากฏชื่อ database ที่เราได้เลือกเมื่อตะกี้ไง ซึ่งสามารถเปลี่ยนเป็นก้อนอื่นได้นะ
# Source for restore เลือกไฟล์ต้นทางซึ่งก็คือ ไฟล์ที่เราทำการสำรองไว้แล้ว
# From device: จะเป็นการเลือกไฟล์ตามที่เราได้ทำในขั้นตอน backup ไฟล์.bak
# From database: นั้นมันจะให้ค้นหาไฟล์ .bak เองนะ
# ในที่นี้ขอเลือกเป็น From device ดีกว่าชัวร์กว่า จากนั้น คลิกปุ่มด้านขวาสุดเห็นปะ ... อ่ะ
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpjP1J7-D8hHrjdcN4kwxvGtGimyzEMmEQ9PH3X7MtbHte8LLTXJiXlTcAF6ns2eInX9_q-BcgaJFOA7yfUCJOefMnzh7ypIHbb_h-8TPgoIGwUOSd5jOn0OXRNES5FLWp-eP6bg/s280/sshot-1.png)
# คลิกที่ Add สิครับ
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMGGZlzDmesE_m38aHj-ZdxrzIcNgmE4Xnkp2l14qiSRQjoAyo7Pef_8z-_2UoSiyvtCly_TnaL6Oiej1O_qXasS6vIh2zzpTiB9ycem2MJktRGFit7S0Kh9rX86hFJSQKlCIWlQ/s280/sshot-2.png)
# จากนั้นก็ค้นหาไฟล์ .bak คือไปย้ง พาธที่เราได้ทำการสร้าง .bak ไว้ไง ทิปนิดหนึ่งคือ ตอนเรา backup ถ้าเราไม่ใส่นามสกุลให้เค้า เมือเราค้นหา .bak เพื่อ restore จะไม่พบไฟล์นะ เราก็ไป rename ใส่ .bak ให้เค้าแล้วทำการค้นหาไฟล์ใหม่ก็จะเจอเอง ไม่ต้อง backup ใหม่อ่ะ
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxmCov28O7OZEznHJxq_2VrDcHuf-WBIuUd8YFot1mcZcsT0F8bsBkH9UgLHMTBd3XmQLZD2AxQzPFyuudCA5P9ttSGjr3MoBDQKF5AiOJAB_CPnM436nBuiVfbhml0RNZaEA8TQ/s280/sshot-4+copy.png)
# ที่กรอบ Select the backup sets to restore: ทำไมมี สองอันล่ะทีนี้จะเลือกอันบนอันล่างดีอ่ะ เราเลือก อันล่างครับ เป็นข้อมูลที่ได้ทำการ backup ล่าสุดอ่ะ คือ ไฟล์ .bak เนี๋ยตอนทำการ backup ได้ทำการตั้งค่าให้เป็นแบบ append ทำให้มีข้อมูลเดิม และ ข้อมุลใหม่ อยู่ในก้อนเดียว
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid_9Fhv4OCRBGoDs8OYVdqyM4mpB0Ls1wABwzj8uvQPfy3kq-p96-Blvt60axjt1KzsfbVvwqKodff4FJdphsNOkw9RTg3CukPyfcTHxonxAlGiBxN7TnGA0H66KVKCxEKZnXIow/s280/sshot-5+copy.png)
# 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 ดังภาพ
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie7RkrXy3MTcuFv3GC_z3P7VkSGOCLzavU69dRyQUxnt4-JxXAuSrDtEPlUbiubySQLIHIwS3ry__86mCt6htMfSlCXE4AIZsbHGFCaNRA2X568VjstyQrt_0w_b4tl3MA0K3lOg/s280/sshot-3.png)
# แต่ถ้าเราพยายาม overwrite ตามที่ error บอกให้ทำก็จะเป็นการ restore ให้ก้อน a ซะงั้น ซึ่ง b ก็จะว่างป่าวเหมือนเดิม ^^'
# ถ้าเป็นงั้นเมื่อเรา restore จาก a.bak มาใส่ b เราต้องตั้ง Restore As เป็น b.mdf และ b_log.ldf
# และ เราต้องเลือก Overwrite ด้วยเพราะถ้าไม่เลือกจะ restore ไม่ได้นะ เพราะ b.mdf และ b_log.ldf มีอยู่แล้ว
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-UM-6fGVpWJcIemxVFN5kBOkwuaToH9rxLHfSX8LOYNtMgIvSQmYGLxnIjPUna4An0x3a9uPPMsvM2_a1a6r2QPspUs3SwOfawpzOGfhRgcXSY4WK37oAslgICTOfWNhZyLu1AQ/s280/sshot-7.png)
# จากนั้นก็คลิก Ok จบครับพี่น้อง
# ถ้า restore ไม่ได้ขึ้นประมาณว่า database in use ให้เราทำการ restart sql server หน่อยเพื่อทำลาย connection ทุก session เลย แล้วลองอีกครั้ง
Notes:- ขอบคุณ เพื่อน koi ที่ช่วยแนะนำวิธีนี้
- อีกทางคือ ทำการ backup และ restore ผ่านไฟล์ .mdf และ ldf โดยตรงเลยซึ่งเห็นเพื่อน atom ทำบ่อย
Reference