ขั้นตอนการตั้ง Restore Database ของ Microsoft SQL Server 2005 มีขั้นตอนอย่างไร

01:15 เขียนโดย QA Optimization - Performance and Stability

Q :ขั้นตอนการตั้ง Restore Database ของ Microsoft SQL Server 2005 มีขั้นตอนอย่างไร
A :มีขั้นตอนการดังนี้
1.ไปที่ Start > Program > Microsoft SQL Server 2005 > SQL Server Management Studio

a. Click ขวาที่ Database แล้วเลือก Restore Database
















b. จะ pop up หน้า Restore Database เพื่อให้ใส่ข้อมูล database ที่ต้องการ Restore


















c. ให้ใส่ชื่อ database name และเลือก source file database ที่ต้องการ Restore
















d. เลือก Select the backup sets to restores


















e. จากนั้นระบบจะเริ่มทำการ Restore จนเสร็จ และจะเห็น pop up message ขึ้นว่า "The restore database '' completed successfully"
















f. ตรวจสอบ database หลังการ backup

ขั้นตอนการตั้ง Backup Auto และการ Clear Backup Auto ของ Microsoft SQL Server 2005 มีขั้นตอนอย่างไร

00:38 เขียนโดย QA Optimization - Performance and Stability

Q :ขั้นตอนการตั้ง Backup Auto และการ Clear Backup Auto ของ Microsoft SQL Server 2005 มีขั้นตอนอย่างไร
A :มีขั้นตอนการดังนี้
1.ไปที่ Start > Program > Microsoft SQL Server 2005 > SQL Server Management Studio
2.เปิดการทำงานของ Service SQL Server
a.เปิด SQL Server Management Studio แล้วคลิ๊กขวาที่ Maintenance Plan Wizard











b.หน้าต่าง Maintenance Plan Wizard กด Next


3.หน้าต่าง Maintenance Plan Wizard
a.Name : ระบุชื่อ Plan ที่ต้องการกำหนด
b.Description: ระบุหมายเหตุที่ต้องการอธิบายข้อมูลต่างๆ


c.เลือก Chang เพื่อกำหนด Plan ตั้ง Backup Auto จะแสดงหน้าต่าง Job Schedule Properties กำหนดข้อมูลที่ต้องการตั้งเวลา


-Frequency กำหนดการตั้งเวลาว่าต้องการตั้งเป็น Day, Week, Monthly
-Daily Frequency กำหนดเวลาที่ต้องการตั้ง Backup Auto
จากนั้นกด OK และกด Next
d.หน้าต่าง Maintenance Plan Wizard ให้กด Next


4.หน้าต่าง Maintenance Plan Wizard ให้เลือกที่
-Back Up Database (Full)
-Maintenance Cleanup Task นี้จะใช้กำหนดการตั้ง Clear Backup เก่าที่ได้ backup เก็บไว้
จากนั้นกด Next


5.หน้าต่าง Maintenance Plan Wizard
a.เลือกที่ Move Up หรือ Move Down เพื่อปรับ Plan ให้มองที่ Backup Database (Full) เป็นลำดับแรก (เป็นการเลือกตั้งลำดับก่อนและหลัง)
b.จากนั้นกด Next


6.หน้าต่าง Maintenance Plan Wizard / Define Backup Up Database (Full) Task
a.Database(s) เลือก base ที่ต้องการตั้ง backup Auto จากนั้นกด OK.


b.Create a backup file for every database หากต้องการเปลี่ยน path ที่จะจัดเก็บตัว backup ให้เลือกและ brow เข้าไปเพื่อเปลี่ยน path หากไม่ต้องการเปลี่ยน path โปรแกรมจะ default ที่ path ลง SQL ครั้งแรก
c.จากนั้น กด Next


7. Define Maintenance Cleanup Task หน้าต่างนี้เป็นการกำหนด Option เพื่อลบข้อมูลที่ Backup Auto ไว้
กำหนดที่ช่อง
a.Delete files of the following type: เลือกกำหนดเป็น Backup File
b.Search folder and delete files based on an extension : เลือก option path file ของ path ที่จัดเก็บ backup ไว้ในการตั้ง clear backup auto
c.Remove historical data older than : เลือกเพื่อกำหนดระยะเวลาในการ clear backup auto
d.กด Next


8.หากต้องการให้แจ้งรายละเอียดของการตั้ง backup สามารถกำหนดได้เป็น 2 option คือ
- จัดเก็บไว้ตาม path ที่ระบุไว้
-ส่ง e-mail แจ้ง


หากไม่ต้องการกำหนดให้ กด Next
9.Maintenance Plan Wizard / Complete the Wizard กด Finish


10.Maintenance Plan Wizard Progress โปรแกรมจะแสดงผลการตั้ง Backup Auto ให้ หากผลการตั้งเรียบร้อยจะแสดงผลเป็น Success

ms sql server 2005 การ Backup และ Restore database Schedule

00:27 เขียนโดย QA Optimization - Performance and Stability

บทความนี้ สำหรับ ผู้ที่ ใช้ Ms sql server 2000 หรือ 2005 ที่ต้องการ Backup database ทุกวัน หรือ ต้องการ Restore Database ทุกวัน แล้วขี้เกียจทำนะครับ (อย่างผมเอง)

ขั้นแรก ก่อนอื่น เราต้อง เปิดใช้งาน service SqlserverAgent ก่อนนะครับ เพราะเราจะใช้ job schedule ทำงาน โดยการตั้งเวลา
เมื่อเปิด service sqlserveragent เรียบร้อยแล้ว ใช้ Script ดังนี้
สำหรับการ Backup Schedule

declare @CurDD VARCHAR(15)
declare @Path nvarchar(200)
select @CurDD = CONVERT(VARCHAR, GETDATE(), 112)

if @CurDD is not NULL
begin
set @Path=‘D:\MSSQL\MSSQL\backup\’+@CurDD
BACKUP DATABASE [ชื่อดาต้าเบส]
TO DISK = @Path WITH NOFORMAT, NOINIT,
NAME = N’ชื่อดาต้าเบส-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD,
STATS = 10

end

เมื่อใส่ script ที่ job schedule แล้ว ที่ผม hilight สีแดงเอาไว้ เปลี่ยน path ที่เก็บไฟล์ Backup ว่าจะให้วางไว้ที่ไหนนะครับ โดยชื่อไฟล์ จะเป็น วันที่ yyyyMMdd ตาม select @CurDD = CONVERT(VARCHAR, GETDATE(), 112) นะครับ
(เรื่องการจัด format datetime ใน sqlserver)

ทีนี้เราก็สามารถ กำหนดเวลาได้แล้วนะครับว่าจะให้ ทำงาน backup ดาต้าเบส ตอนกี่โมง สบายเลยทีเดียว
===========================================
สำหรับการตั้ง Restore Database Schedule
declare @CurDD VARCHAR(15)
declare @Path nvarchar(200)
select @CurDD = CONVERT(VARCHAR, GETDATE(), 112)

if @CurDD is not NULL
begin
set @Path=‘D:\MSSQL\MSSQL\backup\’+@CurDD
RESTORE DATABASE [ชื่อดาต้าเบส]
FROM DISK = @Path
WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
end

เราก็ใช้ คำสั่ง restore Database ชื่อดาต้าเบส นะครับ ก็ ที่ hilight สีแดงไว้ ก้อเปลี่ยน ซะด้วยนะครับ ว่า path ของไฟลื backup ที่จะเอามา restore นั้น อยู่ตรงไหน

Auto Defrag Methods

23:36 เขียนโดย QA Optimization - Performance and Stability

1. From a Bat File

Defrag in both Windows 9x and XP can be easily run from a batch file which when
clicked will automatically begin
defragging your drive or drives, and exit when done. Here's how.

Windows 95/98/Me

This simple defrag bat file automatically defrags all your local drives.

@echo off
DEFRAG.EXE /ALL /F /P /NOPROMPT
cls

If you've never written a batch file, don't worry, it's a simple. Just open
up a new notepad document, type the commands,
then save the file with a .BAT extension.

Note - make sure you are not hiding file extensions. If you're not sure, go to
Folder Options and make sure
there is no checkmark next to "Hide extensions for known file types"


Notice the switches in the above command line

/ALL - means all drives will be defragmented
/F - means all files and free space will be defragmented.
/NOPROMPT - means to defrag without any user prompts. In other words, defrag
begins automatically without questions.

Other switches you can use include.

/U to defragment files only.

/Q to defragment free space only.

/CONCISE to have only the Hide Details view displayed (this is the default).

/DETAILED to have the Details view displayed.

/P - this one is for the old Windows 95 defrag and means System and hidden
files will be optimized

If it's only one drive you need to defrag, just omit the all switch and enter
the drive letter. i.e.
DEFRAG.EXE C: /F /NOPROMPT

To end the defragging at any time, press Ctrl + C

Windows XP

Windows XP defrag does not have an ALL switch but this can be easily worked
around by simply entering each drive in the
bat file. It's only something you have to do once and then you will have a file
that will defrag all your drives with a click
and exit automatically when done.

Let's assume you have 3 partitions you wish to include, c: d: and e:

Open up notepad, enter the simple commands below, and save the file with a .bat
extension.

defrag c: -f
defrag d: -f
defrag e: -f
Double clicking the file will defrag the drives in the order they are listed in
the file and automatically exit when finished.
The f switch is optional and is used to prevent any prompts that your free
space is low

To end the defrag at any time press Ctrl + C



2. Task Scheduling Defrag

Windows 9x

You can also automate defrag by configuring it in Task Scheduler to run at a
set time schedule. To do that in Windows 9x, double-click
My Computer hen open Scheduled Tasks and double click Add Scheduled Task.
Click Next and Choose Disk Defragmenter.from the
list Choose the time schedule and just follow the wizard. At the end, click
"Open Advanced Properties for this task when I click finish"
and enter your defrag options at the end of the defrag command line.. Example:

C:\WINDOWS\DEFRAG.EXE /ALL /NOPROMPT

to defrag all your drives without prompting.



Windows XP

In Windows XP, you can access Task Scheduler in your Accessories>System Tools
folder or in the Control Panel (Settings>Control Panel>Scheduled Tasks)
However you can't automate the XP defrag by simply choosing the defrag utitlity
as the task to run. This will only open up the XP defragmenter and stay there
waiting for user intervention. However, we can work around this XP oversight by
scheduling a bat file to run the defrag. Just create a bat file as described
earlier in this article.
Then start the Task Scheduler wizard and when you get to the list of program
choices, click the Browse button to find and select your bat file.

3. Customizing the Default Defrag Shortcut

Windows 9x only

You can also enter preferred defrag switches at the end of your Defrag shortcut
command line. Click Start>Programs> Accessories>System Tools
where you will see the Disk Defragmenter entry. Right click it, go to
Properties screen, click the Shortcut tab, then click at the end of the command
line in the Target box, enter the switches you prefer. For example, to have
defrag automatically defrag your c: drive without any prompting, every time you
start it,
you would add C: followed by the noprompt switch
C:\WINDOWS\DEFRAG.EXE C: /NOPROMPT
Choosing Defrag would then begin defragging your c: drive automatically and
exit after it finishes.

4. AutoRun Defrag from the Registry

You can also place a command to start defrag in a run key in your registry.
This key here:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
(if the RunServicesOnce key doesn't exist, create it)
Then in the right hand pane create a String value named Defrag.
Double click it and assuming you want all your drives defragged, enter:
DEFRAG.EXE /ALL
What this will do is start defrag on reboot - but only once - as the name
"RunServicesOnce" implies.

The above can also be implemented automatically in Windows 98 by using
Defrag.inf which is included on the Windows 98 CD

การแบ็คอัพและรีสโตร์ข้อมูล

22:45 เขียนโดย QA Optimization - Performance and Stability

การแบ็คอัพและรีสโตร์ข้อมูล

การทำงานของ SQL Server ตั้งอยู่บนปัจจัยที่เกี่ยงข้องหลายอย่าง ตั้งแต่เครื่องที่เป็นฮาร์ดแวร์ (Hardware) ซอฟต์แวร์ (Software) ตลอดจนการจัดการที่ต้องอาศัยบุคลกรเข้าไปทำงานด้วย ดังนั้น ปัจจัยต่างๆอาจจะเป็นสาเหตุหนึ่งที่ทำให้ข้อมูลเสียหายได้ เช่น ฮาร์ดแวร์ ได้แก่ดิสก์เสีย เครื่องไม่ทำงานหรือเปิดไม่ได้ เนื่องจากส่วนประกอบของฮาร์ดแวร์ไม่ทำงาน การทำงานของซอฟต์แวร์เองที่จะเป็นผลต่อความเสียหาย ได้แก่ Operating System (OS), ระบบการจัดการฐานข้อมูล (RDBMS) ทำงานบกพร่อง เช่น ดิสก์เสียทำให้ดาต้าเบสที่ใช้งานเสีย รวมถึงระบบต่างๆที่พัฒนาขึ้นก็มีโอกาสก่อให้เกิดความเสียหายของข้อมูลได้ นอกจากนี้ปัจจัยด้านบุคลากรก็เป็นสาเหตุหนึ่งที่ทำลายข้อมูลได้ เช่น การลบดาต้าเบส การลบเทเบิลโดยไม่ตั้งใจ
ในกระบวนการทำงานที่ต้องใช้ข้อมูลจากดาต้าเบสนั้น การรักษาความปลอดภัยของข้อมูลและความถูกต้องของข้อมูลเป็นสิ่งที่จำเป็นมาก โดยทั่วไปในการใช้ระบบจัดการฐานข้อมูล (Relational Database Management System : RDBMS) จะต้องมีการสำรองข้อมูล (Back Up) แยกเก็บไว้บนสื่ออื่นเพื่อให้นำกลับมาใช้เมื่อดาต้าเบสเกิดขึ้นจากเหตุต่างๆ และวิธีการกู้ข้อมูลแบบอัตโนมัติซึ่ง SQL Server จะทำให้หลังจากมีการรีสตาร์ททุกครั้ง เรียกว่า System Recovery หรือ Automatic Recovery (คือ การที่ SQL Server พยายามกู้ข้อมูลในระบบกลับคืนใกล้สู่สภาพเดิมมากที่สุดก่อนที่ระบบจะมีปัญหา โดยจะทำงานควบคู่กับ Transation Log และ Check Point เพื่อรองรับทรานแซคชั่นหลายๆแบบที่เกิดขึ้นในขณะนั้น) โดยมีหลักการดังนี้

  1. สำหรับทรานแซคชั่นที่ไม่มีการอัพเดทข้อมูลในดาต้าเบส คือ คิวรีเพียงอย่างเดียวก็จะไม่มีการ Recovery
  2. ทราน แซคชั่นที่มีการคอมมิทรานแซคชั่นก่อนที่ระบบจะเสียหาย หรือคอมมิทก่อนจุด Check Point (คือ เวลาที่ระบบจัดการฐานข้อมูลจะนำทรานแซคชั่นที่เสร็จเรียบร้อยแล้วบันทึกลงใน ดาต้าเบส)แม้ว่าจะมีการบันทึกลงดิสก์หรือไม่ก็ตาม ระบบจะรับประกันว่าเมื่อรีสตาร์ท SQL Server ขึ้นมาใหม่ ทรานแซคชั่นและข้อมูลเหล่านั้นจะถูกกู้กลับมาอยู่ในสถานะที่ถูกต้อง
  3. ส่วน ทรานแซคชั่นที่มีการแก้ไขไปบ้าง แต่ยังไม่ได้คอมมิท เมื่อทำการกู้ระบบจะใช้ข้อมูลใน Transaction Log เพื่อยกเลิกทรานแซคชั่น และกลับไปสู่จุดก่อนที่ทรานแซคชั่นจะเริ่ม เหมือนกับว่าทรานแซคชั่นยังไม่ได้ถูกเริ่มทำงานเลย
  4. ส่วน กรณีที่ระบบไม่สามารถกู้ดาต้าเบสกลับคืนมาได้ ก็จำเป็นต้องใช้ข้อมูลที่แบ็คอัพไว้มารีสตาร์ทเพื่อให้ข้อมูลในดาต้าเบสกลับ สู่สภาพปกติ

Transaction Log และ Check Point กับการกู้ข้อมูล
ระบบจัดการฐานข้อมูลของ SQL Server จะดูแลความถูกต้องของการทำงานต่างๆในทุกลักษณะที่เกิดขึ้นกับดาต้าเบส ตั้งแต่ Insert, Update และ Delete โดยบันทึกคำสั่งของการทำงานรวมถึงการเปลี่ยนแปลงที่เกิดขึ้นกับดาต้าเบสลงใน Transaction Log ทุกครั้งก่อนที่จะทำการเปลี่ยนแปลงข้อมูลจริงลงไปในดาต้าเบส ซึ่งข้อมูลจะบันทึกลงดาต้าเบสเมื่อถึงจุด Check Point
ทั้ง Transaction Log และ Check Point ถือได้ว่าเป็นบทบาทสำคัญต่อการกู้ข้อมูลเมื่อมีความเสียหายเกิดกับระบบอย่าง กะทันหัน และหลังจากสตาร์ทเซอร์วิสของ MSSOL Server
ใหม่แล้ว ระบบจัดการฐานข้อมูล (RDBMS) จะทำการกู้ความเสียหายเบื้องต้น โดยจะกู้ดาต้าเบสที่เสียหาย (ถ้ามี) เรียงลำดับ Master,Model,Temp DB,MSDB และดาต้าเบสอื่นๆ เช่น ดาต้าเบสที่สร้างโดยยูสเซอร์ เป็นต้น
ก่อนที่จะลงรายละเอียดของการกู้ข้อมูล ควรจะทำความเข้าใจในเรื่องของ Transaction Log
และ Check Point เสียก่อน จากรูปเวลาที่แต่ละทรานแซคชั่นเกิดขึ้นจนกระทั่งเสร็จสิ้น คือ T1 ถึง T5 ระยะเวลาที่ระบบทำ Check Point คือ T(c)และ T(f) คือ เวลาที่มีความผิดปกติเกิดขึ้น













จากรูปอธิบายได้ดังนี้
1 System Failure เกิดขึ้นที่ T(f) และ Check Point ครั้งล่าสุดที่เกิดขึ้นก่อน T(f) คือ เมื่อเวลา T(c)
2 Transaction T1 เสร็จสิ้นก่อนเวลาT(c)
3. Transaction T2 เกิดก่อนเวลา T(c) และเสร็จสิ้นหลังเวลา T(c) แต่ก่อนเวลา T(f)
4. Transaction T3 เกิดก่อนเวลา T(c) แต่ไม่เสร็จสิ้นหลังเวลา T(c)
5. Transaction T4เกิดก่อนเวลา T(c) และเสร็จสิ้นหลังเวลา T(c)
6. Transaction T2 เกิดก่อนเวลา T(c) แต่ไม่เสร็จสิ้นหลังเวลา T(c)
และหลังจากสตาร์ทเซอร์วิส MSSQL Server ใหม่ได้แล้ว ระบบจะทำการกู้ข้อมูลและตรวจสอบทรานแซคชั่นต่างๆจาก Transaction Log ซึ่งพบว่า

  1. T3 และ T5 จะต้องยกเลิก (Roll Back) เนื่องจากไม่มีการคอมมิททรานแซคชั่นก่อนที่ระบบเสียหาย คือ ใน Transaction Log ไม่พบคำสั่ง Commit Transaction นั่นเอง
  2. T2 และ T4 ทรานแซคชั่นทั้งสองนี้ SQL Server จะอ่านจาก Transaction Log และเข้าไปทำงานใหม่ (Roll Forward) ทั้งนี้เพราะพบว่ามีการคอมมิททรานเซคชั่นหลังจุด Check Point แต่เกิดก่อนเวลาที่เครื่องจะเสียซึ่งหมายความว่า ข้อมูลที่ทำงานตามคำสั่งยังไม่ได้บันทึกลงในดาต้าเบสเท่านั้น
  3. มี ข้อสังเกตว่า T1ไม่ต้องเข้ามาในขบวนการยกเลิก หรือทำงานใหม่ ทั้งนี้เนื่องจาก T1 ได้ทำงานเสร็จสิ้นก่อนจุด Check Point นั่นแสดงว่าระบบได้ทำการบันทึกข้อมูลของการเปลี่ยนแปลงลงดาต้าเบสเรียบร้อย แล้ว

การแบ็คอัพข้อมูล (Backup)
การแบ็คอัพ คือ การสำรองข้อมูลโดยใช้คำสั่งของ SQL Server เพื่อเก็บไว้บนสื่อชนิดอื่น เช่น เทป หรือดิสก์ ซึ่งควรจะเป็นก้อนอื่นนอกเหนือจากก้อนที่เก็บดาต้าเบส ถึงแม้ว่าระบบจัดการฐานข้อมูลของ SQL Server จะเอื้ออำนวยต่อการทำ Automatic Recovery เมื่อข้อมูลเกิดความเสียหายแล้วก็ตาม ผู้ใช้งานระบบควรต้องมีการแบ็คอัพข้อมูลไว้ด้วยเพื่อความปลอดภัยให้มากยิ่ง ขึ้น เพราะถ้าการทำ Automatic Recovery ของ SQL Server ไม่สำเร็จ ก็อาจต้องใช้ข้อมูลชุดแบ็คอัพแทน การแบ็คอัพข้อมูลจะสามารถแบ็คอัพดาต้าเบสตั้งแต่ Master,MSDB,Mode,
Distribution Database รวมทั้งดาต้าเบสที่ผู้ใช้สร้างขึ้นด้วย
ประเภทของการแบ็คอัพ
SQL Server เอื้ออำนวยความสะดวกในการแบ็คอัพ โดยขึ้นกับผู้ใช้งานมีความต้องการจะแบ็คอัพข้อมูลในลักษณะใด การเลือกประเภทของการแบ็คอัพยังขึ้นกับปริมาณข้อมูลด้วย

  1. Database-Complete คือ การแบ็คอัพข้อมูลทั้งหมดของดาต้าเบส และบางส่วนใน Transation Log ที่เกิดขึ้นขณะทำการแบ็คอัพ หรือบางครั้งก็เรียกว่าการทำ Full Backup ซึ่งสามารถแบ็คอัพขณะที่ดาต้าเบสกำลัง Online หรือกำลังถูกใช้งานอยู่ โดยเมื่อเริ่มทำการแบ็คอัพ SQL Server จะเพิ่มรายการแบ็คอัพนี้ไว้ใน Transation Log เพื่อให้รู้ว่าจุดเริ่มต้นอยู่ที่ใด เมื่อแบ็คอัพส่วนที่เป็นดาต้าเบสเสร็จ ก็จะแบ็คอัพ Transation Log ที่เกิดขึ้นเป็นวิธีการแบ็คอัพที่สะดวก และสามารถนำไปใช้ในการทำแบ็คอัพ ล่าสุดเท่านั้น การแบ็คอัพวีธีนี้เหมาะสำหรับ Master,MSDB,Model และยูสเซอร์ดาต้าเบสที่ข้อมูลไม่มากนักและใช้เวลาการแบ็คอัพไม่นาน โดยทั่วไปถ้าดาต้าเบสมีขนาดใหญ่มากและอัพเดทบ่อยๆจะใช้ร่วมกับการแบ็คอัพแบบ อื่นๆคือ Differential และTransaction Log ทำให้ไม่เสียเวลามากไป และยังได้ข้อมูลที่ใกล้เคียงกับความเป็นจริงมากที่สุด
  2. Database-Differential คือ การแบ็คอัพเฉพาะเป็นส่วนที่เป็นข้อมูลที่มีการเปลี่ยนแปลงดังนั้นถ้ามีการ แบ็คอัพแบบ Differrntial ทุกคืน ข้อมูลลที่แบ็คอัพในคืนวันพุธจะมีข้อมูลที่มีการเปลี่ยนแปลงของทั้งวัน จันทร์และอังคารด้วย เวลาที่จะกู้ข้อมูลก็เพียงแต่นำชุด Full Backup ลงก่อน จากนั้นจึงค่อยนำ Differential Backup ครั้งล่าสุดลงถัดไป
  3. Transaction Log คือการแบ็คอัพเฉพาะส่วนที่เป็น Transaction Log การแบ็คอัพแบบนี้จะใช้เมื่อต้องบการแบ็คอัพข้อมูลจนถึงปัจจุบัน ทั้งนี้เพราะข้อมูลที่คอมมิทหลังจากการแบ็คอัพแบบ Full และ Differential ก่อนแล้วจึงค่อยแบ็คอัพ Transaction Log เป็นระยะๆ เมื่อเสร็จสิ้นการแบ็คอัพนี้แต่ละครั้ง SQL Server จะตัดส่วน (Truncate) ของ Transaction Log ที่สมบูรณ์ไป แล้วนำพื้นที่นี้มาใช้ใหม่เพื่อทำ Transaction Log ครั้งถัดไปช่วยให้ Transaction Log มีขนาดใหญ่ไป (การทำแบบ Full และ Differential จะไม่ Truncate ส่วน Transaction Log เมื่อจบการแบ็คอัพ) ดังนั้นเมื่อต้องการจะกู้ข้อมูล ก้อจะต้องเริ่มจากการนำ Full Backup หรือ Differential ลงก่อน แล้วจึ่งค่อยทยอยนำ Transaction Log ที่แบ็คอัพไว้แต่ละชุดลงตามลำดับก่อนหลัง

Time1 Full Backup
Time2 Transaction Log Backup
Time3 Full Backup
Time4 Transaction Log Backup
Time5 System Fail
เมื่อกู้ข้อมูลหลังเวลา Time5 ก็ให้นำ Full Backup ที่เวลา Time3 ลงก่อนจากนั้นค่อยนำ Transaction Log Backup ที่เวลา Time4 ลงแต่เนื่องจาก Log ที่มีในเวลา Time4 นั้นจะเริ่มตั้งแต่หลังจากที่แบ็คอัพ Time2 ซึ่ง่จ่ะคลุม Log ที่ช่วงเวลา Time3 ไปด้วย ดังนั้นจะมีบางส่วนที่ซ้ำกันคือ ช่วง Time2 และ Time3 ทั้งใน Full Backup และ Transaction Log Backup แต่ขณะกู้ข้อมูล SQL Server หากตรวจว่ามีบางส่วนที่ซ้ำกันก็จะข้าม Log ช่วงนั้นใน Transaction Log ไป สิ่งที่จะต้องระวังเมื่อต้องลง Transaction Log ที่แบ็คอัพไว้หลายๆชุดประกอบกันเพื่อกู้ข้อมูล คืออย่าให้แบ็คอัพชุดใดชุดหนึ่งเสียไป เพราะจะทำให้กู้ข้อมูลกลับมาได้ไม่หมด
4. File and Filegroup ในดาต้าซึ่งประกอบไปด้วยไฟล์และไฟล์กรุ๊ปต่างๆ สามารถเลือกที่จะแบ็คอัพแยกแต่ละไฟล์หรือไฟล์กรุ๊ปได้โดยไม่ต้องแบ็คอัพทั้ง ดาต้าเบส วิธีนี้เหมาะสำหรับดาต้าเบสที่ขนาดใหญ่มากๆและมีเวลาไม่เพียงพอที่จะแบ็คอัพ ได้หมด หรือมีการแบงดาต้าเบสแยกเก็บไว้ในหลายๆดิสก์ เมื่อมีดิสก์ใดเกิดเสีย ก็กู้การกู้ไฟล์ก็ยังต้องใช้ชุดแบ็คอัพ Transaction Log ของไฟล์หรือไฟล์กรุ๊ปนั้นลงตามนอกจากว่าข้อมูลในไฟล์หรือไฟล์กรุ๊ปไม่มี การอัพเดท
ข้อจำกัดระหว่างการแบ็คอัพ
แม้ว่าการแบ็คอัพของ SQL Server จะสามารถทำงานได้ขณะที่ยังมีการใช้งาน SQL Server อยู่แต่ก็มีข้อจำกัดบางอย่างไม่ควรกระทำระหว่างการแบ็คอัพ
สำหรับการแบ็คอัพแบบ Full และ Differential สิ่งที่ไม่ควรทำคือ

  1. การจัดการเกี่ยวกับดาต้าเบส ได้แก่ ALTER DATABASE,CREATE DATABASE และ DROP DATABASE
  2. การลดขนาดเนื้อที่ดาต้าเบสด้วยคำสั่ง DBCC SHRINKDATABASE
  3. การสร้างอินเด็กซ์ (เป็นข้อห้ามเฉพาะเมื่อมีการแบ็คอัพดาต้าเบสเท่านั้น)
  4. การ ใช้คำสั่งที่ไม่มีการบันทึกใน Transaction Log ได้แก่ Balk Copy,SELEC INTO ในกรณีที่คำสั่งนี้กำลังทำงานอยู่ แล้วมีการสั่งแบ็คอัพ SQL Server ก็จะยกเลิกการแบ็คอัพ แต่ในทางกลับกันคือ ถ้ากำลังแบ็คอัพอยู่ แล้วมีการส่งคำสั่งเหล่านี้เข้าไป ก็จะทำการยกเลิกคำสั่งเหล่านั้น

ส่วนการแบ็คอัพแบบ Transaction Log จะไม่เกิดขึ้นมา

  1. กำหนดออปชั่น trunc. Log on chkpt ให้เป็น TRUE ซึ่ง Transaction Log จะถูก Truncate เมื่อเกิด Check Point เท่านั้น
  2. ไม่ มีการบันทึกคำสั่งลงใน Transaction Log เลยเพราะเรียกแต่คำสั่งที่ไม่บันทึกลง Transaction Log หลังจากการแบ็คอัพดาต้าเบสครั้งสุดท้าย
  3. มีการเพิ่มหรือลบไฟล์ออกจากดาต้าเบส
  4. Transaction Log ถูก Truncate

การวางแผนการแบ็คอัพ
ก่อนที่จะเริ่มลงมือทำการแบ็คอัพนั้น ควรจะมีการวางแผนว่าจะแบ็คอัพดาต้าเบสด้วยวิธีใด เมื่อไร ในหัวข้อนี้จึงมีแนวทางพอสังเขปเกี่ยวกับการแบ็คอับไว้ให้พิจารณาดังนี้
สำหรับการแบ็คอัพดาต้าเบสแต่ละประเภทควรทำเมื่อมีการเปลี่ยนแปลงเกิดขึ้น สรุปเป็นตารางได้ดังนี้

ชนิดของดาต้าเบส

ประเภทและเวลาที่ควรทำแบ็คอัพ

Master

ทำ Full Backup และแบ็คอัพเมื่อมีการเรียกคำสั่งที่มีผลต่อ System Table ซึ่งได้แก่คำสั่ง
*เพิ่ม แก้ไข และยกเลิกรหัสล็อคอิน
*CREATE,ALTER และ DROP DATABASE
*CREATER,ALTER และ DROP ไฟล์กรุ๊ปหรือแบ็คอัพดีไวซ์
*เปลี่ยนออปชั่นของเซิร์ฟเวอร์หรือดาต้าเบส
*เพิ่มหรือยกเลิกการลิงค์เซิร์ฟเวอร์

MSDB

ทำ Full Backup และควรทำเมื่อ
*สร้างงานที่มีการตั้งเวลาให้ทำงานอัตโนมัติเพราะ MSDB Schedule Task
*มีการทำ หรือปรับแต่งออปชั่นการทำ Replicate

Model

ทำ Full Backup และควรทำเมื่อมีการแก้ไขพร็อพเพอร์ตี้ของดาต้าเบสและเมื่อ เพิ่ม แก้ไข หรือยกเลิกอ๊อปเจ็กต์ในดาต้าเบส Model

Distribution

เมื่อมีการเปลี่ยนแปลงข้อมูลหรือโครงสร้างของดาต้าเบส

User Database

ทำ Full Backup ร่วมกันกับ Differential ควรทำเมื่อสร้างดาต้าเบส เพิ่ม ลบ หรือ เปลี่ยนแปลงโครงสร้างของเทเบิล ข้อมูล รวมทั้งการสร้างอินเด็กซ์

เมื่อ ได้แนวทางในการแบ็คอัพแล้ว ก็ควรจัดทำตารางเวลาทำการแบ็คอัพเป็นระยะๆสำหรับดาต้าเบส Master,MSDB,Model และ Distribution อาจไม่ยุ่งยากมากนัก แต่สำหรับ User Database จำเป็นต้องกำหนดเวลาและวิธีการแบ็คอัพให้ดีโดยมวัตถุประสงค์หลักๆคือ

    1. ให้การแบ็คอัพมีผลต่อระบบรวมน้อยที่สุด
    2. สามารถกู้ข้อมูลที่ถูกคอมมิทคืนกลับมาได้หมด หรือใกล้เคียงมากที่สุด
    3. ใช้เวลาในการกู้ให้น้อยที่สุด

ดัง นั้น การเลือกวิธีใดวิธีหนึ่งในการแบ็คอัพ User Database ไม่สามารถจะบรรลุวัตถุประสงค์ข้างต้นได้ เช่น เลือกทำ Full Backup ทุกทรานแซคชั่น ก็จะทำให้เสียเวลาและเกินกำลังของเครื่องมาก อีกทั้งใช้เวลาในการกู้นานไปด้วย หรือหากมีการแบ็คอัพทุกทรานแซคชั่นที่เกิดขึ้นการกู้ข้อมูลก็จะใช้เวลา เนื่องจากต้องจัดการทุกทรานแซคชั่น การทำแบ็คอัพจึงควรใช้หลายๆวิธีร่วมกัน เช่น กำหนดให้ทำ Full Backup เดือนละครั้ง ขณะที่ทำ Differential ทุกอาทิตย์และทำการแบ็คอัพ Transction Log ทุกคืนอย่างไรก็ตาม การวางแผนยังขึ้นกับขนาดของดาต้าเบสความสำคัญของข้อมูล รวมทั้งมาตรการในการกู้ข้อมูลว่าจะให้ได้คืนมากน้อยเท่าใด

การตรวจสอบก่อนการแบ็คอัพ
ในขบวนการแบ็คอัพข้อมูลของ SQL Server ผู้ใช้งานควรตรวจสอบความถูกต้องของดาต้าเบสก่อน เพื่อให้มั่นใจว่าข้อมูลที่มีอยู่ในดาต้าเบสมีความถูกต้องสมบูรณ์ก่อนการ แบ็คอัพโดยมีคำสั่งสำคัญๆ 2 คำสั่ง คือ DBCC,CHECKDB และ DBCC CHECKALLOC









คำสั่งจะตรวจสอบรายละเอียดต่างๆดังนี้

  1. ตรวจสอบข้อมูลและอินเด็กซ์ของดาต้าเบสสอดคล้องกันหรือไม่ (IntrgrtyX
  2. ตรวจสอบการลิงค์ของดาต้าเบสและอินเด็กซ์เพจว่ามีการลิงค์อย่างถูกต้อง
  3. ตรวจสอบการจัดเรียงอินเด็กซ์เพจ
  4. ตรวจสอบตำแหน่งที่ชี้ของพอยท์เตอร์
  5. ตรวจสอบความถูกต้องของข้อมูลในแต่ละเพจรวมทั้งการจัดสรรเพจต่างๆในดาต้าเบส
  6. ตรวจสอบ Page Offset
  7. ตรวจสอบขนาดของประเภทข้อมูลแบบ Text,Ntext และ Imgae สำหรับแต่ละเทเบิล

คำ สั่งนี้จะทำหน้าที่เหมือนกับการใช้ทั้งคำสั่ง DBCC CHECKALLOC และ DBCC CHECKTABLE ดังนั้นหลังจากใช้คำสั่ง DBCC CHECKDB แล้วจึงไม่จำเป็นต้องใช้คำสั่ง DBCC CHECKALLOC หรือ DBCC CHECKTABLE อีก ในขณะที่เอ็กซีคิวคำสั่งนี้จะทำการ Shared Lock เทเบิลและอินเด็กซ์ที่อยู่ในดาต้าเบสทั้งหมด ทำใหไม่สามารถแก้ไข สร้างหรือ ลบเทเบิลใดๆได้เลย
ออปชั่นต่างๆมีความหมายดังนี้

  1. database_name : ชื่อของดาต้าเบส ถ้าไม่ระบุจะตรวจสอบดาต้าเบสปัจจุบัน
  2. NOINDEX: จะไม่ตรวจสอบอินเด็กซ์ชนิด Non-Clustered สำหรับทุกเทเบิลในดาต้าเบสนั้น แต่จะไม่มีผลกับเทเบิลของระบบเพราะจะทำการตรวจสอบให้อัตโนมัติอยู่แล้ว
  3. REPAIR_ALLOW_DATA_LOSS | REPAIR_REBUILD : ระบุให้แก้ไขเมื่อพบข้อผิดพลาดที่เกิดขึ้นที่เกิดขึ้นบนดาต้าเบส
  4. ALL_ERRORMSGS : ให้แสดงข้อความรายละเอียดของการตรวจเช็คทั้งหมด ถ้าไม่ระบุจะแสดงเพียง 200 รายการสำหรับแต่ละเทเบิล
  5. NO_INFOMSGS: ไม่แสดงรายละเอียดของการตรวจเช็ค บอกแต่เพียงว่าการตรวจเช็คได้เสร็จสิ้นลงแล้ว

ตัวอย่าง การตรวจสอบด้วย DBCC CHECKDB
DBCC CHECKDB(‘FIRSTCB’)




เป็น คำสั่งที่ตรวจสอบความสอดคล้องกันของเทเบิลต่างๆโดยตรวจสอบทั้งความถูกต้อง ภายใน และตรวจสอบความสอดคล้องกันระหว่างเทเบิล เช่น การตรวจสอบชื่คอลัมน์ทีเก็บในเทเบิล Syscolumns ให้มีประเภทข้อมูลที่ถูกต้องตรงกับเทเบิล Systypes การตรวจสอลชื่อเทเบิลและวิวทีอยู่ในเทเบบิล Sysobjects คือให้มีคอลัมน์ตรงกับเทเบิล Syscolumns

  1. database_name คือ ชื่อของดาต้าเบส ถ้าไม่ระบุจะตรวจสอบดาต้าเบสปัจจุบัน
  2. WITH NO_INFORMSGS ไม่แสดงข้อความรายละเอียดของการตรวจเช็ค บอกแต่เพียงการตรวจเช็คได้เสร็จสิ้นลงแล้ว

ถ้าระบุชื่อดาต้าเบสจะตรวจสอบที่ดาต้าเบสตัวนั้น แต่ถ้าไม่ระบุชื่อดาต้าเบสจะตรวจสอบดาต้าเบสปัจจุบัน
ตัวอย่าง การตรวจด้วย DBCC CHECKCATALOG
DBCC CHECKCATALOG(‘FIRSTDB’)
การสร้างแบ็คอัพดีไวซ์
ในการแบ็คอัพซึ่งต้องระบุสื่อที่ใช้เก็บข้อมูลที่เรียกว่า แบ็คอัพดีไวซ์ (Backup Device) นั้น อาจระบุถึงสื่อโดยใช้ชื่อที่เป็น Physical Name หรือ Logical Name ก็ได้ สำหรับ Physical Name เป็นชื่อที่ระบบปฏิบัติการกำหนดมาให้ เช่น C:\Backups \Sales\Full.bak เป็นดิสก์ดีไวซ์สำหรับการแบ็คอัพเพื่อเก็บไว้บนดิสก์ \\.\TAPE0 เป็นเทปดีไวซ์ของเครื่องที่ต่อกับเครื่องนั้น ๆ (Local Server) สำหรับ Logical Name เป็นชื่อเล่นหรืออีกชื่อหนึ่ง (Alias Name) ของแบ็คอัพดีไวซ์ ที่ผู้ใช้กำหนดขึ้นมาใหม่เพื่อให้เรียกใช้ได้ง่ายกว่าการใช้ Physical Name อย่างไรก็ตามสามารถใช้ชื่อทั้งสองแบบสลับกันไปมาได้ และสามารถจะใช้ Logical Name นี้ได้เฉพาะใน SQL Server เท่านั้น การสร้างแบ็คอัพดีไวซ์จึงเป็นการสร้าง Logical Name ให้กับแบ็คอัพดีไวซ์ที่มีอยู่ ไม่ได้สร้าง Physical Device ขึ้นมา (ถ้าจะสร้าง Physical Device ให้ปรึกษาดูแลระบบ Windows NT)
ในการแบ็คอัพลงบนแบ็คอัพดีไวซ์ เราสามารถใช้แบ็คอัพดีไวซ์เพียงตัวเดียวเพื่อทำการแบ็คอัพข้อมูลจากหลาย ๆ ดาต้าเบสได้ หรือเราอาจเลือกแบ็คอัพดีไวซ์หลายตัวมาช่วยในการแบ็คอัพข้อมูลชุดเดียวกันใน แต่ละครั้งก็ได้ ทั้งนี้ให้พึงระวังว่า ถ้ามีการแบ็คอัพหลายดาต้าเบสต้องเลือกออปชั้นให้ข้อมูลชุดถัดไปอยู่ต่อจาก ข้อมูลชุดแรกเสมอ (Append) และถ้าเป็นการแบ็คอัพครั้งแรกที่ต้องการลบส่วนที่แบ็คอัพก่อนหน้านี้ออกไปก็ ให้เลือกเป็น Overwrite

การสร้างแบ็คอัพดีไวซ์ Enterprise Manager
1. เป็น Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
2. ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Management จะเห็นโฟลเดอร์ Backup ให้คลิกเมาส์ปุ่มขวาที่ Backup แล้วเลือก New Backup Device…
3. ที่หน้าจอ Backup Device Properties – New Device
— ที่ช่อง Name ให้ตั้งชื่อ Logical Name ของดีไวซ์
— คลิกเช็คบ็อกซ์ File Name เพื่อเลือกดีไวซ์เป็นดิสก์ (ถ้าคลิกเช็คบ็อกซ์ Tapc Drive Name จะเลือกดีไวซ์แบบเทป) และระบุ Physical Name ถ้าเครื่องเซิร์ฟเวอร์ไม่มีเทปต่ออยู่ออปชั่น Tape Drive Name จะถูก Disable ไม่ให้เลือก
4. เมื่อเรียบร้อยให้คลิก OK

การสร้างแบ็คอัพดีไวซ์โดย Transaction-SQL
— ‘device_type’ : ชื่อของดีไวซ์แบบดิสก์หรือเทป โดยใช้คำเฉพาะว่า disk หรือ tape
— ‘logical_nane’ : ชื่อที่ใช้อ้างอิงใน SQL Server
— ‘physical_name’ : สำหรับดิสก์ คือ ชื่อของไฟลเดอร์ ซึ่งอาจเป็นดิสก์ของเครื่องอื่น ๆ ในเน็ตเวิร์กก็ได้ หรือถ้าเป็นเทปก็คือตำแหน่งของเทปทางกายภาพที่ต่ออยู่กับเครื่องนั้น เช่น \\.\tape0
ตัวอย่าง สร้างแบ็คอัพดีไวซ์ที่ดิสก์ชื่อ BACKALLDB ไว้ที่โฟลเดอร์
C:\MSSQL7\BACKUP)
sp_addumpdevice ‘disk’, ‘b\ABCKALLDB’, ‘C:\MSSQL7\BACKUP’
การลบแบ็คอัพดีไวซ์โดย Enterprise Manager
1. เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
2. ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Management คลิกโฟลเดอร์ Backup จะเห็นชื่อแบ็คอัพดีไวซ์ทั้งหมดที่วินโดว์ขวามือ
3. คลิกเมาส์ปุ่มขวาตรงชื่อของแบ็คอัพดีไวซ์ที่จะลบ แล้วเลือก Delete
4. เครื่องจะแสดงข้อความเพื่อยืนยันอีกครั้ง ถ้าแน่ใจให้คลิก Yes

การลบแบ็คอัพดีไวซ์ด้วย Transaction-SQL
— ‘device’ : Logical Name mต้องการลบ โดยที่ Physical Device ยังคงอยู่
— [@delfile =[‘delfile’] : ถ้าระบุออปชั่น Defile จะทำให้ลบ Physical File ที่อยู่บนดิสก์ออกไป
ตัวอย่าง ลบแบ็คอัพดีไวซ์ที่ดิสก์ชื่อ BACKALLDB
sp_dropdevice ‘BACKALLDB’

การแบ็คอัพดาต้าเบสโดย Enterprise Manager
การแบ็คอัพโดยใช้ Enterprise Manager นี้ สามารถเลือกวิธีการแบ็คอัพได้ทุกแบบ เช่น แบบ Database-Complete, Database Differential, Transaction Log หรือ File and File Group โดยมีหลักการเดียวกัน ซึ่งจะเห็นได้จากขั้นตอนต่อไปนี้
1. เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
2. ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Databases จะโชว์ชื่อดาต้าเบส
3. ให้คลิกเมาส์ปุ่มขวาดาต้าเบสที่เราต้องการ แล้วเลือก All Tasks>Backup Database
4. หน้าจอ SQL Server Backup จากรูปอธิบายเพิ่มเติมได้ดังนี้ — Database คือ ชื่อดาต้าเบสที่จะแบ็คอัพ ซึ่งหากต้องการเลือกใหม่ให้คลิกที่ปุ่มลูกศรชี้ลงข้าง ๆ กรอบ Database
— Name คือ ชื่อของการแบ็คอัพครั้งนี้ โดยปกติ SQL Server จะกำหนดให้โดยใช้ชื่อดาต้าเบสก่อนแล้วตามด้วยคำว่า Backup ถ้าจะเปลี่ยนก็ให้บันทึกซ้ำ
— Description คือ คำอธิบายการแบ็คอัพ
— Backup คือ การระบุชนิดของการแบ็คอัพมี 4 แบบ คือ
¡ Database – Complete แบ็คอัพทั้งดาต้าเบส
¡ Database – Differential แบ็คอัพเฉพาะส่วนที่มีการแก้ไขเพิ่มติมของดาต้า
เบส หลังจากการแบ็คอัพครั้งที่แล้ว
¡ Transaction Log แบ็คอัพเฉพาะ Transaction Log และ Truncate Transaction Log ให้ด้วย
¡ File and File Group แบ็คอัพเฉพาะไฟล์หรือไฟล์กรุ๊ปที่ต้องการ
¡ Destination คือ ดีไวซ์หรือสื่อที่ใช้เก็บข้อมูลที่แบ็คอัพ อาจเป็นดิสก์หรือเทปก็ได้ โดยจะระบุเป็น Logical Name หรือ Physical Name
¡ คลิกปุ่ม Add เพื่อใส่ชื่อแบ็คอัพดีไวซ์สำหรับแบ็คอัพ หรือสร้างแบ็คอัพใหม่จะแสดงในขั้นที่ 5
¡ คลิกปุ่ม Remove เพื่อลบดีไวซ์
¡ คลิกปุ่ม Content เพื่อแสดงข้อมูลที่เก็บไว้ในแบ็คอัพดีไวซ์นั้น
¡ Overwrite มี 2 แบบให้เลือกคือ Append to Media คือ ให้บันทึกต่อท้ายข้อมูลเดิมในแบ็คอัพดีไวซ์และ Overwrite Existing Media หมายถึง การบันทึกทับข้อมูลเดิมในแบ็คอัพดีไวซ์
¡ Schedule คือ ตั้งเวลาการแบ็คอัพเพื่อให้ทำงานโดยอัตโนมัติเมื่อถึงเวลานั้น ให้คลิกที่เช็คบ็อกซ์ Schedule แล้วคลิกปุ่ม ... จะได้บนหน้าจอที่ให้กำหนดรายละเอียดของการตั้งเวลาในการแบ็คอัพ
¡ Name ชื่อของการทำงานครั้งนี้ ซึ่งมีค่าดีฟอลต์เป็น Schedulel
¡ Enabled ถ้าคลิกเลือกเช็คบ็อกซ์ที่ออปชันนี้ คือ สามารถทำงานหลังจากกำหนดออปชั่นทั้งหมดเรียบร้อย
¡ Schedule Type คือ ตัวกำหนดว่าจะให้แบ็คอัพนี้เกิดขึ้นเมื่อใด
¸ Start Automatically When SQL Server Agent Starts ให้แบ็คอัพเมื่อเซอร์วิส ของ SQL Server Agent สตาร์ท
¸ Start Whenever The CPU (s) Become Idle ให้แบ็คอัพเมื่อ CPU อยู่ในสถานะ Idle (หยุดพัก)
¸ One Time ให้แบ็คอัพตามวันที่กำหนด (On Date) และเวลาที่กำหนด (On Time)
¸ Recurring คือ ให้แบ็คอัพซ้ำ ๆ กันได้ โดยกำหนดให้ทำทุกวัน หรือทุกสัปดาห์ หรือทุกเดือนนี้ ทั้งนี้ให้เลือกโดยคลิกที่ปุ่ม Change
5. เมื่อคลิกปุ่ม Add ในกรอบ Destination ของขั้นที่ 4 เปลี่ยนไปแสดงที่หน้าจอ Choose Backup Destination ให้คลิกที่เช็คบ็อกซ์ Backup Device แล้วคลิกที่ปุ่มลูกศรชี้ลงเพื่อเลือก Logical Name ชื่อ Backup_1 เมื่อเรียบร้อยคลิก OK หรือจะเลือกเป็น File Name เพื่อระบุเป็น Physical Name ที่จะใช้แบ็คอัพ
6. เครื่องจะกลับไปที่หน้าจอ SQL Server Backup และแสงชื่อของ Backup_1 ที่กรอบของ Destination (ถ้าเลือกดีไวซ์หลายตัว คือ การให้แบ็คอัพลงหลายดีไวซ์พร้อม ๆ กัน ซึ่งจะช่วยเพิ่มความเร็วในการแบ็คอัพถ้าดีไวซ์นั้นอยู่คนละไดรฟ์กัน)
7. ให้คลิกแท็ป Options เพื่อดูออปชั่นในที่นี้ให้กำหนดตามดีฟอลต์ จากนั้นคลิก OK แต่ละออปชั่นมีความหมาย ดังนี้
— Verify Backup Upon Completion ให้ระบบตรวจสอบผลการแบ็คอัพอีกครั้งหลังจากแบ็คอัพเสร็จแล้ว
— Eject Tape After Backup ให้ดันม้วนเทปออกจากเทปไดรฟ์หลังจากแบ็คอัพเสร็จ
— Remove Inactive Entries From Transaction Log (ใช้เฉพาะกับการแบ็คอัพ Transaction Log) ให้ลบ (Truncate) รายการใน Transaction Log ที่คอมมิทแล้วหลังจากที่แบ็คอัพเสร็จ
— Check Media Set Name and Backup Set Expiration ให้ตรวจสอบชื่อของดีไวซ์และวันหยุดอายุของดีไวซ์ก่อนที่จะบันทึก จะช่วยป้องกันความผิดพลาดในการหยิบแบ็คอัพดีไวซ์ที่ผิดมาใช้ที่ช่อง Media Set Name ให้ระบุชื่อของดีไวซ์
— Backup Set Will Expire ระบุจำนวนวันหรือวันที่ที่จะให้ดีไวซ์นั้นหมดอายุและพร้อมที่จะให้บันทึกทับ ดีไวซ์นั้นได้ มี 2 แบบ คือ After ให้บันทึกทับดีไวซ์นั้นเมื่อครบจำนวนวันที่กำหนด หลังจากแบ็คอัพเสร็จ ส่วน On คือ ให้บันทึกทับดีไวซ์นั้นหลังจากวันที่กำหนด
— Initialize and Label Media ให้บันทึกรายละเอียดเกี่ยวกับเทปที่ส่วนต้นของเทปและลบข้อมูลเดิมที่มีอยู่ รวมทั้งรายละเอียดเดิมออกไป เช่น วันหมดอายุ Media Set Name มักใช้เมื่อใช้สื่อบันทึกเป็นครั้งแรก หรือต้องการเปลี่ยนข้อมูลเดิมที่มีอยู่เสียใหม่
¡ Media Set Name ระบุชื่อของดีไวซ์ที่ส่วนตัวของดีไวซ์
¡ Media Set Description ระบุส่วนที่เป็นคำอธิบายเพิ่มเติมเกี่ยวกับดีไวซ์
8. เครื่องจะทำการแบ็คอัพจนกระทั่งแสดงข้อความ “The Backup Operation has been Completed Successfully” ให้คลิก OK

การแบ็คอัพดาต้าเบสโดย Transaction SQL
— DATABASE : กำหนดว่าจะแบ็คอัพแบบ Full Database
— database_name| @database_name_var : ชื่อดาต้าเบสที่จะแบ็คอัพ ซึ่งอาจเก็บไว้ในตัวแปรที่เก็บชื่อของดาต้าเบส โดยต้องมีประเภทเป็น next หรือ text
— backup_device : เป็นชื่อแบ็คอัพดีไวซ์ที่เป็นเทปหรือดิสก์ ซึ่งระบุได้ 2 แบบ คือ แบบ Logical Name กับ Physical Name
¡ {backup_device_name} | {@backup_device_name_var} : ระบุ Logical Name ของดีไวซ์นั้นเลย หรือเป็นตัวแปรที่เก็บชื่อดีไวซ์อีกทีหนึ่ง ซึ่ง Logical Name นี้จะได้จากคำสั่ง sp_addumpdevice
¡ {DISK | TAPE | PIPE} = ‘temp_backup_device’ |
@temp_backup_device_var : ระบุเป็น Physical Name ของดี
ไวซ์ จะต้องใส่ประเภทของสื่อกำกับไว้ด้วยว่าเป็น Disk Tape
หรือ Pipe เช่น
DISK =’ C:\MISSQL7\BACKUP\DiskBackup1.BAK’
— Description : คำอธิบายเกี่ยวกับการแบ็คอัพมีความยาวไม่เกิน 255 ตัวอักษร จะใช้ตอนกู้ข้อมูลเพื่อหยิบสื่อที่แบ็คอัพไว้มาใช้ได้ถูกต้อง
— Differential : กำหนดให้ทำการแบ็คอัพแบบ Differential
— Expiredate : กำหนดว่าสื่อที่แบ็คอัพไว้ไม่สามารถบันทึกทับได้ จนกว่าจะเลยวันที่หมดอายุ รูปแบบของวันที่ให้ระบุตามแบบวันที่ดีฟอลต์ของ SQL Server (ส่วนใหญ่จะเป็น mm-dd-yy หรือ mm-dd-yyy) และสามารถใช้ออปชั่น Skip เพื่อไม่ให้เช็ค Expiredate
— Retaindays : กำหนดจำนวนวันหลังจากแบ็คอัพแล้วจึงจะบันทึกทับลงในดีไวซ์นี้ได้ ซึ่งเป็นการกำหนดวันหมดอายุเช่นกัน เพียงแต่ระบุเป็นจำนวนวันแทนการระบุวันเดือนปีที่หมดอายุ สามารถใช้ออปชั่น Skip เพื่อไม่ให้เช็ค Retaindays
— Format | Noformat
¡ Format : หมายถึง การกำหนดให้ลบส่วนที่เป็นรายละเอียดของดีไวซ์ (Header Information) ออปชั่นนี้จะครอบคลุมทั้งออปชั่น INIT และ SKIP จึงไม่จำเป็นต้องระบุออปชั่นทั้งสองนี้ซ้ำอีก
Noformat : จะทำหน้าที่ตรงข้ามกับ Format
— INIT | NOINIT
¡ INIT : หมายถึง ข้อมูลที่แบ็คอัพจะอยู่ในตำแหน่งที่เป็นไฟล์แรกของดีไวซ์และจะไม่ลบส่วนที่ เก็บรายละเอียดส่วนต้นของแบ็คอัพดีไวซ์
¡ NOINIT : คือ ให้บันทึกข้อมุลต่อท้ายข้อมูลที่แบ็คอัพไว้แล้ว
— MEDIANAME = media_name : คือ ชื่อของดีไวซ์ มีความยาวไม่เกิน 128 ตัวอักษร เมื่อระบุให้มีชื่อดีไวซ์แล้ว ในการแบ็คอัพครั้งถัดไปต้องระบุชื่อดีไวซ์ให้ตรงกันหรือถ้าไม่ต้องการให้ เช็คอีกก็ต้องระบุ Skip
— NAME = backup_set_name : บอกชื่อของแบ็คอัพเซ็ท ถ้าไม่ใส่จะมีค่าเป็น Blank
— NOSKIP | SKIP : ถ้าระบุ Skip จะไม่ตรวจสอบ Expiredate และ MEDIANAME และถ้าระบุ Noskip ให้ตรวจสอบ Expiredate, MEDIANAME ถ้าไม่ตรงตามเงื่อนไขจะไม่สามารถบันทึกข้อมูลทับได้
— Nounload | Unload
¡ Nounload : กำหนดให้ม้วนเทปยังคงอยู่ในเทปไดรฟ์เมื่อแบ็คอัพเสร็จแล้ว
¡ Unload : ให้กรอเทปกลับไปยังต้นม้วนและดันม้วนเทปออกมาจากเทปไดรฟ์

— STATS[=percentage] : กำหนดให้ส่งข้อความแจ้งเตือนทุก ๆ ครั้งที่แบ็คอัพได้ครบตามจำนวนเปอร์เซ็นต์ที่ระบุ เช่น ส่งข้อความทุกครั้งที่แบ็คอัพได้ครบทุก 10% แต่ถ้าไม่ระบุเปอร์เซ็นต์ จะมีค่าฟอลต์เป็น 10%

ตัวอย่าง ให้แบ็คอัพ Northwind ลงแบ็คอัพดีไวซ์ชื่อ User Backup มีออปชั่นแบบ INIT และวันหมดอายุ วันที่ 05 เดือน 01 ปี ค.ศ. 2005
BACKUP DATABASE Northwind to UserBackup
WITH INIT, EXPIREDATE = ‘07-05-2000’
สำหรับรูปแบบของคำสั่งที่ใช้แบ็คอัพไฟล์หรือไฟล์กรุ๊ป เป็นดังนี้

ในการแบ็คอัพแบบไฟล์หรือไฟล์กรุ๊ปนี้ ใช้เพื่อแบ็คอัพข้อมูลตามชื่อไฟล์ที่สร้างไว้ในดิสก์ หรือแบ็คอัพโดยระบุชื่อไฟล์กรุ๊ป


¡ FILE = {logical_file_name | @logical_file_name_var} : ชื่อไฟล์ที่ต้องการนำมาแบ็คอัพ
¡ FILEGROUP = [logical_filegroup_name | @logical_filegroup_name_var} : ชื่อของไฟล์กรุ๊ป

ตัวอย่าง
BACKUP DATABASE EmpDB
FILE = ‘EmpDB_Data’,
FILEGROUP = ‘EMPGR1’
TO DiskBackup1

การแบ็คอัพ Transaction Log โดย Transaction-SQL
การแบ็คอัพ Transaction Log คือ การแบ็คอัพเฉพาะส่วนของทรานแซคชั่นที่เกิดขึ้นใน Transaction Log การแบ็คอัพโดยวิธีนี้จะใช้ร่วมกับการแบ็คอัพแบบ Full และ Differential และ สามารถนำไปประยุกต์ใช้กัยการกู้ข้อมูลใกล้จุดที่ดาต้าเบสเสียจริงๆ

  • NO_LOG | TURNCATE_ONLY : เมื่อใช้ออปชั่นนี้ ระบบจะเครียร์ทรานแซคชั่น ที่คอมมิทแล้วแกจาก Transaction Log ทำให้ได้ที่ว่างๆ สำหรับ Transaction Log เพิ่ม บางครั้งมักใช้คำสั่งนี้เพื่อเคลียร์ Transaction Log ที่เต็ม ทั้ง NO_LOG และ TRUNCATE_ONLY จะทำงานเหมือนกัน เว้นแต่ NO_LOG จะใช้เมื่อ Transaction Log เต็มจริงๆ และใช้ออปชั่น TRUNCATE_ONLY ไม่ได้ ก่อนใช้ออปชั่นนี้ควรแน่ใจว่า จะไม่พบเหตุที่ต้องกู้ดาต้าเบสอย่างกระทันหัน ทางที่ดีควรแบ็คอัพแบบ full เสียก่อน
  • NO_TRUNCATE : การแบ็คอัพ Transaction Log โดยไม่เคลียร์ทรานแซคชั่น เดิมออก เมื่อเลือกใช้ออปชั่นนี้แล้ว ถ้าดาต้าเบสถูกเสียหายกระทันหัน สามารถนำ Transaction Log มากู้ดาต้าเบส

ส่วนออปชั่นอื่นๆมีความหมายเดียวกันกับคำสั่ง Backup Database
ตัวอย่าง สร้างแบ็คอัพดีไวซ์ชื่อ Disk Backup 2 และแบ็คอัพเฉพาะ Transaction Log ของ First DB ลงลงแบ็คอัพดีไวซ์นั้น
USE master
EXEC sp_addumpdevice ‘disk’,’DiskBackup2’,
‘c:\mssql7\backup\DiskBackup2.bak’
BACKUP LOG FirstDB TO DiskBackup 2 WITH INIT
ตัวอย่าง เคลียร์ Transaction Log ของดาต้าเบส First DB โดยไม่ได้แบ็คอัพ Transaction Log
BACK LOG FirstDB WITH TRUNCATE_ONLY
การดูรายการที่แบ็คอัพในแบ็คอัพดีไวซ์โดยใช้ Enterprise Manager
เมื่อทำการแบ็คอัพดาต้าแล้ว สิ่งที่ควรตรวจสอบ คือ แบ็คอัพดีไวซ์มีข้อมูลที่แบ็คอัพครบถ้วนและถูกต้องหรือไม่ เช่น ต้องการดูรายละเอียดการแบ็คอัพของดีไวซ์ Disk Backup 1 ให้ทำขั้นตอนดังนี้

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Management จะโชว์ชื่อดาต้าเบสในกรอบด้านขวา
  • ให้คลิกเมาส์ปุ่มขวาดาต้าเบสที่เราต้องการ แล้วเลือก Properties
  • ที่หน้าจอของ Backup Device Properties คลิกปุ่ม View Contents






















  • ที่ หน้าจอ View Backup Media Contents เป็นส่วนที่แสดงรายการสิ่งต่างๆ ที่แบ็คอัพไว้จากรูปอธิบายได้ว่าขณะนี้ Backup_1 เป็นแบ็คอัพดีไวซ์ที่เก็บข้อมูลของดาต้าเบส Northwind ตัวเดียวเท่านั้น คลิกปุ่ม Close เพื่อเลิกดู











6. เครื่องจะ กลับไปที่หน้าจอของ Backup Device Properties-Disk Back 1

การแบ็คอัพหลายๆดาต้าเบสไว้ในแบ็คอัพดีไวซ์เดียวกันโดยใช้ Enterprise Manager
ต่อไปนี้จะเสนอวิธีการแบ็คอัพดาต้าเบสต่างๆลงบนแบ็คอัพดีไวซ์ชื่อ Disk Backup 1 โดยการแบ็คอัพดาต้าเบสแรกจะแบ็คอัพทับข้อมูลเก่าที่มีอยู่ใน Backup_1 (จากการแบ็คอัพก่อนหน้านี้) ส่วนตั้งแต่ดาต้าเบสที่สอง สาม... เป็นต้นไป จะแบ็คอัพต่อท้ายดาต้าเบสแรก ซึ่งจะใช้ออปชั่น INIT หรือ Format ไม่ได้

ในตัวอย่างถัดไปจะแสดงการแบ็คอัพหลายๆดาต้าเบส คือ Master,Model,MSDB และ User Database ในที่นี้คือ OrganDB

ขั้นที่ 1 แบ็คอัพ Master

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่Database จะโชว์ชื่อดาต้าเบส
  • ให้คลิกขวาดาต้าเบส Master แล้วคลิก All Tasks>Backup Database
  • จะปรากฏหน้าจอ SQL Server Backup – Master ให้คลิกที่เช็คบ็อกซ์ Database Complete และ Overwrite Exiting Media จากนั้นคลิก Add






























  • จาก นั้นหน้าจอแสดง Choose Backup Destination ให้คลิกที่เช็คบ็อกซ์ Backup Device แล้วคลิกที่ลูกศรชี้ลงเพื่อเลือกดีไวซ์ชื่อ Back_1 จากนั้นคลิก OK
















  • เครื่องจะกลับไปแสดงหน้าจอ SQL Server Backup – Master พร้อมกับแสดงชื่อ Backup_1 ในกรอบของ Destination คลิกปุ่ม OK





























  • ระบบจะเริ่มการแบ็คอัพ จนกระทั่งแสดงข้อความ “The Backup Operation has been Completed Successfully”





ขั้นที่ 2 การแบ็คอัพดาต้าเบสที่เหลือ คือ Model,MSDB และ OrganDB
ให้ดำเนินการเช่นเดียวกับขั้นตอน 1 การแบ็คอัพ Master ตั้งแต่ข้อ1 ถึงข้อ5 โดยที่
ในขั้นตอนย่อยที่1 ให้เปลี่ยนจาก Master เป็น Model,MSDB และ OrganDB ตามลำดับ
ในขั้นตอนย่อยที่2 ให้คลิกที่เช็คบ็อกซ์ Append to Media ดังตัวอย่างในรูป
















เมื่อ แบ็คอัพเรียบร้อยให้ดูรายละเอียดภายในดีไวซ์ Backup_1 คลิกขวาเลือก Properties จะปรากฏหน้าจอ Backup Media Contents และจะต้องมีดาต้าเบสที่แบ็คอัพทั้งหมดอยู่ 4 รายการ คือ Master,Model,MSDB และ OrganDB ตามลำดับ

การแบ็คอัพโดยใช้แบทช์ไฟล์
การแบ็คอัพโดยใช้แบทซ์ไฟล์จะทำให้ผู้ใช้งานมีความสะดวกมากขึ้น คือ สร้างชุดคำสั่งที่จะแบ็คอัพดาต้าเบสไว้ ซึ่งในชุดคำสั่งหนึ่งๆ จะมีคำสั่งในการแบ็คอัพดาต้าเบสมากกว่าหนึ่งตัวได้และนอกจากนี้ยังสามารถ เลือกเวลาที่จะแบ็คอัพตามสะดวกได้อีก
ตัวอย่าง สร้างแบทช์ไฟล์สำหรับการแบ็คอัพ โดยให้แบ็คอัพลงเทปไดรฟ์ และให้เรียกผ่านยูทิลิตี้ OSQL ทำได้ดังนี้

  • สร้างแบทช์ไฟล์โดยอาจใช้โปรแกรม Notepad ก็ได้ ป้อนคำสั่งต่อไปนี้แล้วเก็บไว้เป็นไฟล์ที่มีนามสกุลเป็น .BAT เช่น C:\SQLBac.bat

OSQL /U sa/P /S DBSQLSVR /i c:\SQLDump.qry /o c:\SQLDump.lst
จากคำสั่งมีความหมายว่า เรียกยูทิลิตี้ OSQL โดยใชยูสเซอร์ชื่อ sa บนเครื่องเซิร์ฟเวอร์ชื่อ DBSQLSVR มีอินพุตไฟล์ที่เป็นคำสั่งชื่อ C:\SQLDump.qry และให้เก็บเอาท์พุตที่ไฟล์ C:\SQLDump.lst

  • สร้าง ไฟล์ชื่อ SQLDump.qry โดยใช้โปรแกรม Notepad และมีคำสั่งในกรรแบ็คอัพดังกรอบข้างล่างนี้ การใช้ออปชั่น INIT ที่ชุดแรกของการแบ็คอัพนี้เพื่อทำการเคลียร์ดีไวซ์ (Initial Device) หรือบันทึกข้อมูลทับข้อมูลเก่าบนดีไวซ์ (Overwrite Exiting Media) นั่นเอง และคำสั่งต่างๆ นั้นจะทำการแบ็คอัพดาต้าเบส 4ตัว คือ Master, Model, MSDB และ First DB ตามลำดับ และเมื่อแบ็คอัพเสร็จแล้ว ให้กรอเทปกลับ และดันเทฟออกมาจากเทปไดร์ฟด้วย

backup database master to TapeDump
WITH nounload, stats= 10, init ,skip
backup database model to TapeDump
WITH nounload, stats= 10, noinit ,skip
backup database msdb to TapeDump
WITH nounload, stats= 10, init ,skip
backup database FirstDB to TapeDump
WITH unload, stats= 10, noinit ,skip

  • สร้างดีไวซ์ที่เป็นเทปชื่อ Tape Dump

sp_addumpdevice ‘tape’,’TapeDump’,’\\. \tape()’

  • เรียก C:\SQLBck.bat ให้ทำงาน โดยไปที่ MS-DOS Prompt ของเครื่องเซิร์ฟเวอร์ป้อนคำสั่ง SQLBck.bat แล้วกด Enter โดยต้องเตรียมเทปใส่ไว้ในเทปเทปไดร์ฟที่เครื่องเซิร์ฟเวอร์ก่นเรียกคำสั่ง ด้วย

การกู้ข้อมูล (Recoery)
ในขณะที่ใช้ดาต้าเบสนั้นอาจมีเหตุต่างๆที่ไม่คาดคิดเกิดขึ้น แล้วก่อให้เกิดผลต่อข้อมูลที่เก็บไว้ เช่น ข้อมูลที่ได้ไม่สดคล้องกัน แต่ข้อมูลไม่เสียหาย หรือในบางครั้งฮาร์ดดิสก์เกิดพัง แล้วดาต้าเบสเสียหายไปด้วย ผู้ดูแลฐานข้อมูล (DBA) จำเป็นต้องกู้ข้อมูลให้กลับมาอยู่ในสภาพที่ถูกต้องและนำข้อมูลเท่าที่ได้ แบ็คอัพไว้กลับมารีสโตร์ ยิ่งแบ็คอัพมากเท่าใด ก็จะได้ข้อมูลที่ใกล้เคียงมากขึ้นเท่านั้น
ในระบบ SQL Server มีการกู้ข้อมูลอยู่ 2 แบบ คือ Automatic Recovery และ Manual Recovery

  • Automatic Recovery วิธีนี้ SQL Server จะทำเอง หลังจากที่ SQL Server หยุดการทำงานกลางคัน จากเหตุไฟดับ กดปุ่มรีเซ็ทเครื่องโดยไม่ตั้งใจ หรือจากแอพริเคชั่นที่ทำให้ SQL Server ไม่ได้ถูก Shutdown ตามปกติ (Abnormal Shutdown) เมื่อ SQL Server ถูกรีสตาร์ทขึ้นมาใหม่ ก็จะพยายามกู้ข้อมูลเอง โดยจะเริ่มกู้ข้อมูลในดาต้าเบส Master, Model, MSDB และ User Database โดยการเช็คคำสั่งใน Transaction Log ว่ามีทรานแซคชั่นใดที่เกิดหลังจากจุด Check Point ถ้าทรานแซคชั่นใดมีการคอมมิทก็ต้องส่งเข้าไปทำใหม่ (Roll Forward) แต่ถ้าทรานแซคชั่นใดไม่ได้คอมมิทก็จะถูกยกเลิกไป (Roll Back)
  • Manual Recovery คือ การกู้ดาต้าเบสโดยผู้ใช้เอง อาจใช้คำสั่งของ Transaction-SQL หรือทำโดย Enterprise Manager การกู้ดาต้าเบสแบบนี้ ผูใช้ต้องมีการแบ็คอัพข้อมูลไว้ก่อนที่จะเกิดปัญหากับดาต้าเบส และเมื่อต้องการกู้ดาต้าเบสคืนสู่สภาวะเดิมก็นำชุดที่แบ็คอัพไว้มารีสโตร์ โดยมีขั้นตอนคล่าวๆ ในการรีสโตร์เมื่อระบบมีปัญหา คือ
    • แบ็คอัพ Transaction Log
    • จากนั้นรีสโตร์ดาต้าเบสจากแบ็คอัพชุดล่าสุด (จากชุด Full Backup และตามด้วยชุด Differential ถ้ามี)
    • รีสโตร์แบ็คอัพของ Transaction Log ถ้ามีการแบ็คอัพไว้หลายครั้ง ให้รีสโตร์จากชุดแรกสุดก่อนตามด้วยแบ็คอัพชุดอื่นๆ เรียงตามลำดับ
    • แล้วป้อนข้อมูลหรือรายการที่ไม่ถูกคอมมิทลงไปใหม่

หลังจากที่ทำขั้นตอนเหล่านี้ด้วยความราบรื่นแล้ว ก็จะได้ดาต้าเบสคืนกลับมาในสภาพเดิมจนถึงจุดก่อนที่ดาต้าเบสจะเสียหาย

หมายเหตุ สำหรับดาต้าเบส Model และ MSDB นอกจากจะต้องรีสโตร์ใหม่เฉพาะในกรณีที่ เครื่องหรือดาต้าเบสเสียหายแล้ว ควรจะรีสโตร์เมื่อมีการสร้างดาต้าเบส Master ใหม่โดยใช้คำสั่ง Rebuild Master เพราะคำสั่งนี้จะลบและสร้างดาต้าเบส Model และ MSDB ขึ้นมาใหม่

หลักการกู้ข้อมูล
ถ้าพบว่าดาต้าเบส หรือดิสก์เสียหาย มีข้อควรพิจารณาในการดำเนินการดังต่อไปนี้

  1. ถ้า ดาต้าเบสเสีย อาจจะลบดาต้าเบสตัวเดิมออกและสร้างใหม่ จากนั้นนำชุดแบ็คอัพไปรีสโตร์ได้เลย (คำว่า Suspect ยู่หลังดาต้าเบสใด มีความหมายว่า ดาต้าเบสนั้นเสียหาย ไม่สามารถใช้งานได้) การรีสโตร์ดาต้าเบสนั้นยังสามารถนำไปใช้ประยุกต์สำหรับการย้ายดาต้าเบสไปลง ที่ SQL Server ตัวอื่นได้ด้วย โดยการสร้างดาต้าเบสที่เครื่องเซิร์ฟเวอร์ตัวนั้นแล้วรีสโตร์ข้อมูล
  2. ถ้าต้องการเปลี่ยนาร์ดดิสก์ใหม่ หลังจากเปลี่ยนฮาร์ดดิสก์แล้วก็ให้รีสโตร์ข้อมูล
  3. แบ็ค อัพ Transaction Log ในระบบ ขึ้นทันทีที่ระบบเสียหายและยังสามารถอ่านและแบ็คอัพ Transaction Log ขึ้นมาได้ โดยใช้คำสั่ง Backup Log
  4. ถ้าข้อมูลเสียหาย เนื่องจากการลบข้อมูลผิด หรือลบเทเบิลผิด เป็นต้น สามารถนำชุดแบ็คอัพที่มีอยู่มารีสโตร์ได้เหมือนกัน ดังนั้นข้อมูลที่แบ็คอัพไว้มิใช่เป็นเพียงเพื่อการกู้ข้อมูลเมื่อดาต้าเบส เสียหายทางกายภาพเท่านั้น

เทคนิคการกู้ดาต้าเบส
ให้พิจารณาตารางเวลาการแบ็คอัพ และชนิดของแบ็คอัพในช่วงเวลาต่างๆกันเริ่มต้นจากการสร้างดาต้าเบสหลังจาก นั้นกำหนดตารางการแบ็คอัพดาต้าเบสและ Trnsaction Log ดังนี้
ศุกร์ 17.00 น Backup Database: INVDB
จันทร์ 10.00 น Backup Transaction Log
จันทร์ 17.00 น Backup Transaction Log
อังคาร 10.00 น Backup Transaction Log
อังคาร 16.50 น Backup Transaction Log
อังคาร 17.00 น Backup Database

สมมติ ถ้าระบบ SQL Server มีปัญหาเมื่อวันจันทร์ เวลา 16.00 น.และดาต้าเบส INVDB เสียหายไม่สามารถทำงานต่อได้ แต่จากข้อมูลที่แบ็คอัพไว้มีข้อมูลของการแบ็คอัพทั้งดาต้าเบสเฉพาะวันศุกร์ 17.00 น.และ Transaction Log วันจันทร์ 16.00 น. เท่านั้น ดังนั้นหลังจาก 10.00 น. จะไม่มีข้อมูลที่แบ็คอัพไว้เลย
การแก้ปัญหา ปกติ ถ้าตอนสร้างดาต้าเบสและ Transaction Log ออกจากกันรวมทั้งมีการระบุตำแหน่งของไฟล์เป็นไดรฟ์กันด้วย โอกาสที่จะกู้ข้อมูลคืนมาทั้งหมดจนถึงเวลา 16.00 น. เป็นวิธีการที่ไม่ยากเลยเพราะถ้าส่วนของดาต้าเบสเสียอย่างเดียวจะแบ็คอัพ เป็นส่วน Transaction Log ทันที แล้วก็จะกู้ข้อมูลมาจนถึงจุดที่เครื่องมีปัญหาได้ทั้งนี้ต้องมีชุดแบ็ตอัพ ตั้งแต่วันศุกร์ 17.00 น. และจันทร์ 10.00 น. ด้วยแต่ถ้าเสียในส่วน Transaction Log ก็ต้องทำใจเพราะผู้ใช้ระบบต้องเริ่มต้นทำรายการของทรานแซคชั่นกันใหม่ ตั้งแต่หลัง 10.00 น. จนถึง 16.00 น. เพราะไม่สามารถกู้ทรานแซคชั่นได้

การกู้ภัยยูสเซอร์ดาต้าเบส

ใน ขั้นตอนนี้ขอสมมติว่า Northwind มีความเสียหาย เช่น Suspect ซึ่งเราจะเห็นได้ที่จอ Enterprise Manager จะมีข้อความว่า “ Suspect” ปรากฎอยู่ที่ชื่อดาต้าเบสตัวนั้น อาการนี้เกิดจากไฟล์ของดาต้าเบสที่อยู่ในดิสก์เสีย (คงจำได้ว่าเมื่อมีการสร้างดาต้าเบสของ SQL Server จะมีการสร้างไฟล์บนดิสก์เพื่อเก็บข้อมูล คือ *.mdf และส่วนที่เป็น Log คือ ,.ldf *หรือ .ndf ) ดังนั้นเมื่อดาต้าเบส First DB Suspect จะไม่สามารถเปิดใช้งานได้อีก ต้องทำการกู้ดาต้าเบสก่อนโดยมีขั้นตอนดังต่อไปนี้

วิธีการสร้างสถานการณ์ให้ข้อมูลหรือ Northwind เสีย
1.ให้ปิดเซอร์วิสของ MSSQL Server
2.ไปที่\MSSQL7\DATA เปลี่ยนชื่อไฟล์เก็บข้อมูลของ Northwind คือ Northwnd.mdf ให้เป็นชื่ออื่น (Northwnd.mdfold)
3.สตาร์ทเซอร์วิสของ MSSQL Server
4.ที่ Enterprise Manager เปิดโฟลเดอร์ Dataabase ครั้งแรกที่เห็น คือ Northwind ยังปกติอยู่ให้คลิกเมาส์ปุ่มขวาที่ดาต้าเบส Northwind แล้วคลิก Refresh เราจะเห็นว่ามีข้อความว่า Suspect อยู่ข้างชื่อดาต้าเบสหรือพยายามเปิดโฟลเดอร์ Northwind จะเปิดไม่ได้ และมีข้อความเตือนว่าดาต้าเบสมีปัญหา

หมายเหตุ ถ้าจะแก้ไข Northwind ให้กลับสู่สภาพเดิม ขอให้ปิดเซอร์วิสของMSSQL Server แล้วแก้ไขชื่อไฟล์ first.mdfoldใน \MSSQL7\DATA ให้เป็น first.mdf

การRestoreโดย Transaction-SQL

RESTORE DATABASE {database_name| @ database_name_var}
[FROM

[[,] {NOUNLOAD | UNLOAD}]
[[,] REPLACE
[[,] STATS [= perccntage]]

RESTORE DATABASE {database_name | @database_name_var}
[ FROM [,……n]]
[WITH
[DBO_ONLY]
[[,] FILE = fole_number]
[[,] MEDIANAME = { media_name | @ media _name_variable}]
[[,] { NORECOVERY ]
[[,] { NOUNLOAD | UNLOAD}]
[[,] REPLACE]
[[,] STATS [ = percentage]]

คำสั่ง Restore Database นี้จะรีสโตร์ทั้งดาต้าเบส หรือ รีสโตร์ไฟล์ หรือ ไฟล์กรุ๊ปจากแบ็คอัพ ดีไวซ์ที่ระบุ

  • FROM<> : ระบุชื่อของแบ็คอัพดีไวซ์ที่มีข้อมูลที่จะนำมารีสโตร์
  • DBO_ONLY : เป็นการกำหนดให้ดาต้าเบสมีความปลอดภัยหลังจากที่รีสโตร์เสร็จแล้วการกำหนด แบบนี้จะทำให้ดาต้าเบสเท่านั้นที่มีสิทธิ์ในการใช้ดาต้าเบส ถ้าต้องการให้ยูสเซอร์ทั่วไปสามารถใช้งานได้ตามปกติภายหลังให้กำหนดออปชั่น DBO_ONLY เป็น FALSE โดยใช้คำสั่ง sp_dboption
  • FILE = file_number : การระบุลำดับที่ของการแบ็คอัพที่จะรีสโตร์ ใช้ในกรณีที่มีการแบ็คอัพหลายดาต้าเบสไว้ในดีไวซ์เดียวกัน เช่น ถ้าระบุเป็น 2 คือ ให้รีสโตร์ชุดแบ็คอัพที่สองในดีไวซ์
  • MEDIANAME = { media_name | @ media_name_variable} : ชื่อของดีไวซ์ถ้าระบุคำสั่งนี้ก็จะไม่เช็ค
  • MOVE ‘logical_file_name’ TO ‘operation_system_file_name’ : เพื่อทำการเปลี่ยนตำแหน่งของข้อมูลที่จะรีสโตร์ไปไว้ยังที่อื่น มักใช้เพื่อรีสโตร์ไปยังดิสก์อื่น
  • Recovery : เมื่อรีสโตร์แล้ว จะให้ระบบโรลแบ็คคำสั่งที่ไม่คอมมิทใน Transaction Log และไม่สามารถนำแบ็คอัพชุดใด ๆ มารีสโตร์ต่อไปอีกหลังจากนั้นดาต้าเบสจะใช้งานทันที

(ค่านี้เป็นดีฟอลต์)

  • Norecovery : หลังจากรีสโตร์ตามคำสั่งเสร็จแล้ว ยังไม่ต้องโรลแบ็คทรานแซคชั่นที่ไม่ถูกต้องคอมมิทใน Transaction Log ทั้งนี้เพื่อต้องการนำ Transaction Log
  • Standby : หลังจากทำการรีสโตร์ด้าต้าเบสแล้วจะทำให้ดาต้าเบสอยู่ในสถานะที่อ่านได้ อย่างเดียว ขณะรีสโตร์ Transaction Log ถ้าระบุ Undo_file_name ที่ประกอบไปด้วยพาธและชื่อไฟล์ไว้ด้วย ฏ้จะเก็บข้อมูลในการรีสโตร์ไว้ที่ไฟล์นี้และสามารถนำไฟล์นี้มาใช้เพื่อทำให้ ดาต้าเบสกลับสู่สภาพเดิมก่อนรีสโตร์ได้ทั้งนี้เพื่อป้องกันความผิดพลาดนั่น เอง
  • Nounload | Unload: Nounload คือ ไม่ต้องดันเทปออกจากเทปไดรฟ์ เมื่อรีสโตร์เสร็จ หรือ Unload คือ กรอเทปกลับไปต้นม้วนและดันเทปออกมาจากเทปไดรฟ์หลังจากแบ็คอัพเสร็จ
  • Replace : ถ้าระบุออปชั่นนี้จะลบและสร้างดาต้าเบสใหม่ตามชื่อที่กำหนดหลังคำสั่ง Restore ก่อนที่จะรีสโตร์แม้จะมีชื่อเหมือนเดิมก็ตาม
  • Restart : ระบุให้ SQL ทำการรีสโตร์ใหม่ถ้าเกิดขัดข้องขึ้น โดยเริ่ม ณ จุดที่ไม่สามารถรีสโตร์ได้ สำหรับออปชั่นนี้จะใช้สำหรับเทป หรือการรีสโตร์จากเทปหลายไดรฟ์เท่านั้น
  • Starts : เพื่อใช้บอกความก้าวหน้าในการรีสโตร์ดาต้าเบสตามเปอร์เซ็นต์ที่กำหนดไว้

การ รีสโตร์ดาต้าเบสจากแบ็คอัพดีไวซ์ที่มีแบ็คอัพหลายตัว (หมายถึง แบ็คอัพหลายๆ ดาต้าเบสไว้ในแบ็คอัพดีไวซ์เดียวกัน) เช่น รีสโตร์ Nortwind จาก Backup Device 1 ถ้า First DB อยู่ลำดับที่ 4 ของ Backup Device 1 จะใช้
RESTORE DATABASE Northwind FROM Backup_1 WITH FILE=4
ตัวอย่าง ในตัวอย่างต่อไปนี้ จะเริ่มตั้งแต่สร้างแบคอัพดีไวซ์ แบ็คอัพ Northwind แล้ว
ขั้นที่ 1 : สร้างแบ็คอัพดีไวซ์และแบคอัพดาต้าเบสชื่อ Northwind
USE master
EXEC sp_addumpdevice ‘disk’ , ‘DiskBackup’
c:\mssql17\backup\DiskBackup3.bak’
BACKUP DATABASE Northwind TO Backup_3 WITH INIT
ขั้นที่ 2 : ทำดาต้าเบส Northwind ให้เสีย( ศึกษาจากขั้นตอนที่กล่าวมาแล้ว ) จากนั้นให้เปิดเซอร์วิสของ MSSQL Server ใหม่
ขั้นที่ 3 : กู้ดาต้าเบส Northwind ด้วยคำสั่ง Restore Database และในตัวอย่างนี้ให้ระบุReplace เพราะมีดาต้าเบสชื่อ Northwind อยู่แล้วถึงแม้จะเสียอยู่ก็ตาม
RESTORE DATABASE Northwind
FROM Backup_3 WITH REPLACE

การรีสโตร์ Transaction Log โดย Transaction-SQL


เป็นคำสั่งที่ใช้รีสโตร์ Transaction Log โดยแต่ละออปชั่นมีความหมายเช่นเดียวกับ Restore Database

Restore Filestonly
รายละเอียดของพารามิเตอร์เหมือนกับ Restore Database ( ถ้าไม่ระบุออปชั่นของ File จะให้ค่าดีฟอลต์เป็น 1 หมายถึง แบ็คอัพชุดแรกที่อยู่ในดีไวซ์นั้น)

RESTORE FILEESONLY
[FROM
[WITH
[FILE = file_number]
[[,] {NOUNLOAD | UNLOND}]]


เป็น คำสั่งเพื่อแสดงรายละเอียดภายในแบ็คอัพดีไวซ์ ได้แก่ ตำแหน่งที่เก็บไฟล์ของดาต้าเบส ประเภทของไฟล์(อยู่ในคอลัมน์ Type ถ้าแสดง D หมายถึง ส่วนที่ดาต้าเบสและ L หมายถึง ส่วนที่เป็น Transaction Log ) ไฟล์กรุ๊ป และขนาดของไฟล์ เช่น ใช้เพื่อแสดงรายละเอียดในแบ็คอัพดีไวซ์ชื่อ Backup_1 โดยสนใจรายละเอียดของแบ็คอัพในลำดับที่ 4
BESTORE FILELISTONLY FROM Backup_1 WITH FILE = 4
Restore Headeronlys

รายละเอียดของพารามิเตอร์ เหมือนกับ Restore Katabase
เป็นคำสั่งให้แสดงรายละเอียดการแบ็คอัพทั้งหมดในดีไวซ์ ได้แก่ ชื่อคำอธิบายการแบ็คอัพ ประเภทการแบคอัพ (ในคอลัมภ์ Backup Type มีค่า 1=Database,2=Transaction, 4=File,5=Differential) วันหมดอายุ เป็นต้น
RESTORE HEADERONLY FROM Bacup_1
Restore Lableonly

RESTORE LABLERONLY

[FROM

[WITH

[[,] {NOUNLOAD | UNLOAD}]]


รายละเอียดของพารามิเตอร์เหมือนกับ Restore Database
เป็นคำสั่งเพื่อแสดงลาเบลของแบ็คอัพดีไวซ์ ซึ่งสิ่งที่แสดงจะช่วยในการค้นหาแบ็คอัพดีไวซ์ที่ต้องการมาใช้งานได้ เช่น Medıa Name เป็นต้น
RESTORE LABELONLY FROM Bacup_1
Restore Verifyonly
รายละเอียดของพารามิเตอร์ เหมือนกัน Restore Database

RESTORE VERIFYONLY

[FROM [,…n]]

[WITH

[[,] FILE =file_number]

[[,] {NOUNLOAD | UNLOAD }]]

[[,] LOADHISTORY ]]


เป็นคำสั่งเพื่อตรวจสอบสิ่งที่เคยแบคอัพไว้ในแบ็คอัพดีไวซ์ว่ามีความสมบูรณ์ และยังสามารถอ่านมาใช้งานได้หลังจากใช้คำสั่งแล้ว ถ้าได้ผลลัพธ์ที่ถูกต้องจะแสดงข้อความว่า “The Backup Set is Valid”
♦ Loadhistory เพื่อโหลดข้อมูลที่เกี่ยวกับชื่อดีไวซ์ และรายละเอียดอื่นๆ ที่เก็บใน MSDB เพื่อใช้ในการตรวจสอบการรีสโตร์
RESTORE VERIFYONLY FROM Bacup_1
การ Restore โดย Enterprise Manager
ในขั้นตอนต่อไปนี้จะรีสโตร์ข้อมูลของดาต้าเบส Northwind จากแบคอัพดีไวซ์ชื่อ Backup 3 หรือBackup 1 ก็ได้

  • 1.เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
    2. ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database จะโชว์ชื่อดาต้าเบส
    3. ให้คลิกเมาส์ปุ่มขวาดาต้าเบส Northwind แล้วเลือก All Tasks>Restore Database
    4. ที่หน้าจอ Restore Database



















  • ♦ ที่ช่อง Restore As Database ให้เลือกชื่อดาต้าเบสที่ต้องการรีสโตร์
    สำหรับการรีสโตร์ข้อมูลนั้น สามารถเลือกทำได้ 3 แบบ คือ Database, File Groups or Files และ From Device ในการเลือกนั้นขึ้นอยู่กับว่าสิ่งที่จะรีสโตร์นั้นเป็นอะไร เช่น ถ้าต้องการรีสโตร์ดาต้าเบสเพราะดาต้าเบสเสีย และไม่ทราบว่าอยู่ที่ดีไวซ์นั้นก็ให้เลือกออปชั่น Database เพราะหน้าจอจะแสดงรายระเอียดที่เคยแบ็คอัพเฉพาะดาต้าเบสนั้นเพื่อให้สามารถ เลือกชุดที่ต้องการรีสโตร์ได้ แต่ถ้าต้องการรีสโตร์แบบ File Groups of Files แสดงว่าเคยแบ็คอัพแบบไฟล์หรือไฟล์กรุ๊ปไว้ และต้องการนำมารีสโตร์ ทั้งนี้เมื่อเลือกออปชั่นนี้เครื่องจะแสดงรายระเอียดเกี่ยวกับดีไวซ์ที่เคย แบ็คอัพไฟล์หรือไฟล์กรุ๊ปนั้นไว้ให้เลือกได้ แต่ถ้าเลือกการรีสโตร์แบบ From Devuce แสดงว่าต้องการรีสโตร์จากข้อมูลที่เคยแบ็คอัพไว้ในดีไวซ์ ซึ่งอาจเป็นไฟล์ ไฟล์กรุ๊ปดาต้าเบส หรือ Transaction Log
    4.1 ถ้ารีสโตร์ดาต้าเบส หรือ Transaction Log ของดาต้าเบสนั้น ให้คลิ๊กเช็คบอกซ์ Database เพื่อรีสโตร์ข้อมูลสู่ดาต้าเบสที่ระบุชื่อไว้ ซึ่งจะรีสโตร์จากชุดที่เคยแบคอัพแบบใดก็ได้ แต้ต้องมีข้อมูลของดาต้าเบสที่เลือกไว้ ที่กรอบของ Restore As Database สามารถคลิกเพื่อเลือกชื่อดาต้าเบสที่ต้องการรีสโตร์ได้ พร้อมทั้งกำหนดออปชั่นอื่นๆ ในกรอบ พารามิเตอร์
    รูป 293


























  • ♦ Show Backups of Database ให้เลือกชื่อดาต้าเบสที่ต้องการรีสโตร์
    ♦ First Backup to Restore สำหรับแสดงวันเวลาล่าสุดที่ได้แบคอัพไว้
    ♦ Point in Time Restore สำหรับระบุวันเวลาที่ต้องการให้รีสโตร์ถึงจุดนั้น
    ♦ รายละเอียดของแบ็คอัพแต่ละชุดมีดังนี้
    ♦ Restore ให้คลิกเลือกเพื่อต้องการให้รีสโตร์เฉพาะรายการนั้น หรือคลิ๊กอีกครั้งเพื่อยกเลิกรายการที่เลือกไว้
    ♦ Type แสดงเป็นไอคอนเพื่อบอกถึงรายละเอียดของการแบ็คอัพ เช่น ถ้าเคยแบ็คอัพแบบ Database Complete ในกรณีที่ต้องการรีสโตร์แบบ Differential หรือ Transaction Log จะมีเส้นประโยงไปยังไอคอนที่แบ็คอัพแบบ Database Complete ในกรณีที่ต้องการรีสโตร์แบบ Differential หรือ Transaction Log
    ♦ Backup Set Date คือวันเวลาที่แบคอัพไว้
    ♦ Size คือขนาดของอักษรที่แบ็คอัพ
    ♦ Restore บอกชื่อ From Physical Name ของชุดแบ็คอัพ
    ♦ Backup Set Name ชื่อชุดที่แบ็คอัพไว้

    จากนั้นข้ามไปทำขั้นที่ 3
    4.2 ถ้าจะรีสโตร์ไฟล์หรือกรุ๊ป คลิกเช็คที่บอกซ์ File Groups or Files จะแสดงรายระเอียดเกี่ยวกับไฟล์กรุ๊ปหรือไฟล์ที่เคยแบ็คอัพไว้ ในหน้าจอนี้จะมีออปชั่น Select a Subset of Backup Sets ซึ่งแตกต่างไปจารการรีสโตร์แบบ Database
    4.2.1 ที่คอลัมภ์ Restore ในตารางด้านล่าง ให้คลิกเลือกแต่ละไฟล์หรือไฟล์กรุ๊ปที่จะรีสโตร์
    4.2.2 เมื่อคลิกที่เช็คบอกซ์ Select a Subset of Backup จะทำให้ได้หน้าจอ Filter Backup Sets (หลังจากที่เลือกออปชั่นนี้แล้ว ปุ่ม Selection Criteria จะแสดงชัดขึ้น และครั้งต่อไปให้คลิกนี้แทนเพื่อเข้าหน้าจอ Filter Backup Sets) หน้าจอนี้ใช้สำหรับให้เลือกแสดงเฉพาะรายการที่ตรงกับเงื่อนไขที่ต้องการ
    ♦ Only the Backup Sets of the As Data Files on Drive ให้แสดงเฉพาะรายการแบ็คอัพที่อยู่ในไดรฟ์ที่ระบุ
    ♦ Only the Backup Sets Completed After Date, Time ให้แสดงเฉพาะรายการแบ็คอัพที่เกิดหลังจากวันเวลาที่ ระบุ
    ♦ Only the Backup Sets of the Following Filegroups and Files ให้แสดงเฉพาะการแบ็คอัพของไฟล์กรุ๊ปหรือไฟล์ที่คลิกเลือกไว้ในกรอบข้างล่าง เท่านั้น
    4.2.3แล้วข้ามไปทำข้อที่ 3
    4.3 ถ้าต้องการจะระบุแบ็คอัพดีไวซ์ในการรีสโตร์ คลิกเช็คบอกซ์ From Device จะได้หน้าจอ

    • Backup Number แสดงรายการที่เคยแบ็คอัพไว้ในแบ็คอัพดีไวซ์ ถ้าระบุหมายเลขแล้วคลิกที่ปุ่ม view Contents จะได้รายระเอียดของการแบ็คอัพซึ่งจะกล่าวต่อไป
    • ที่ Restore Backup Set ให้คลิกที่ Database Complete เพื่อเลือกรีสโตร์ทั้งดาต้าเบสหรือจะเลือก Dıfferentıal, Transaction Log หรือ File of File Group
    • Read Backup Set Information and Add to Backup History ออปนี้จะไม่ทำให้เกิดการรีสโตร์ แต่จะเป็นเพียงการอ่านรายละเอียดจากแบ็คอัพดีไวซ์มาเก็บไวเป็นประวัติการ แบ็คอัพ
    • คลิก Select Devices เพื่อเลือกแบ็คอัพดีไวซ์ชื่อ Disk Backup 3 จากนั้นจะไปยังขั้นที่ 2.3.1
        • เครื่องจะแสดงหน้าจอ Choose Restore Devices ให้คลิกเช็คบอกซ์ Restore From ให้คลิก Disk แล้วคลิก Add
        • ที่ หน้าจอ Choose Restore Destination ให้คลิกที่เช็คบอกซ์ Backup Device แล้วคลิกที่ปุ่มลูกศรชี้ลงเพื่อเลือก Disk Backup 3 เสร็จแล้วให้คลิก Ok
        • เครื่องจะกลับไปที่หน้าจอของ Choose Restore Devices และจะมีชื่อดีไวซ์

    C:MSSQL7\BACKUIP\DiskBackup3.BAK แสดงที่กรอบของ Device Name ให้คลิก ok

        • กลับไปหน้าจอ Restore Database ให้คลิก View Contents จะมีเพียงรายการเดียว และมีเช็คบ๊อกซ์เลือกอยู่แล้ว
    • กลับไปที่หน้าจอ Restore Database คลิกที่แท๊บ Options และคลิกที่เช็คบอกซ์ Force Restore Over Exiting Database คลิก OK
      • Eject Tapes After Restorıng Each Backup ถ้ารีสโตร์จากเทปไดร์ฟ เมื่อรีสโตร์เสร็จให้ดันม้วนเทปออกมาด้วย
      • Prompt Before Restorıng Each Backup กำหนดให้มีการถามก่อนที่จะรีสโตร์รายการถัดไป ใช้เมื่อมีการรีสโตร์หลายๆ รายการ เพื่อจะสามารถหยุดการทำงานได้ถ้าพบข้อผิดพลาด
      • Force Restere Over Existing Database หมายถึง ถ้ามีดาต้าเบสอยู่แล้วให้รีสโตร์ข้อมูลทับลงไปที่ดาต้าเบสนั้นเลย แต่ถ้าไม่เลือกเช็คบอกซ์นี้และมีดาต้าเบสนั้นอยู่แล้วก็ไม่สามารถรีสโตร์ได้
      • Restore Database Files As:
        • Logical File Name คือ Logical Name ของไฟล์ดาต้าเบสและ Transaction Log ที่รีสโตร์
        • Move to Physıcal Fıle Name เป็นชื่อและตำแหน่งของไฟล์ ซึ่งสามารถเปลี่ยน พาธที่ต้องการเก็บไฟล์บนดิสก์ได้ ทั้งนี้มีประโยชน์กรณีที่ต้องการย้ายดาต้าเบสไปยังไดรฟ์ที่มีเนื้อที่มาก ขึ้น หรือ ไดร์ฟเดิมเสียใช้การไม่ได้
        • ปุ่ม Read From Media ในกรณีที่แก้ไข แล้วอยากกลับไปสู่รายละเอียดเก่าที่แบ็คอัพไว้ คลิกปุ่มนี้เพื่อโหลดข้อมูลเข้ามาใหม่

    ♦ Recovery Completıon State

    • Leave Database Operatıonal No Addıtıonal Transactıon Logs Can Be Restored กำหนดออปชั่นนี้เมื่อมีการรีสโตร์ครั้งนี้เป็นครั้งสุดท้าย และไม่มีการรีสโตร์ Transaction Log อีก เมื่อ รีสโตร์เสร็จดาต้าเบสจะเปิดใช้งานได้ทันที
    • Leave Database Nonoperatıonalö But Able to Restore Addıtıonal Transactıon Logs เมื่อเลือกออปชั่นนี้ หลังจากรีสโตร์แล้วดาต้าเบสยังใช้งานไม่ได้ มักใช้ในกรณีที่การรีสโตร์ยังไม่เสร็จสิ้น คือยังมีแบ็คอัพอื่นๆ ที่ต้องรีสโตร์ต่ดจากการรีสโตร์ครั้งนี้อีก ซึ่งอาจรีสโตร์ Differential Backup หรือ Transaction Log ต่อจากนี้อีกก็ได้
    • Leave Database Read-Only and Able to Restore Additional Transaction Logs หมายถึง หลังจากรีสโตร์แล้วจะเปิใช้ดาต้าเบสได้ โดยสามารถอ่านข้อมูลได้เพียงอย่างเดียว พร้อมทั้งสามารถจะรีสโตร์ Differential Backup หรือ Transaction Log ต่อจากนี้อีกก็ได้
    • Undo File ให้ใส่ชื่อและพาธของไฟล์ที่เก็บข้อมูลของการรีสโตร์ครั้งที่ผ่านมาไว้ เพื่อใช้กู้ข้อมูลให้กลับสู่สภาพเดิมก่อนการรีสโตร์ ถ้าการรีสโตร์นั้นมีความผิดพลาดเกิดขึ้น
    1. เครื่องจะรีสโตร์จนแสดงข้อความ Restore of Database ‘Northwind’ Completed Successfully ให้คลิก ok

    หมาย เหตุ เมื่อรีสโตร์เสร็จแล้วให้เปิดโฟลเดอร์ Northwind อีกครั้งเพื่อเช็คว่าเปิดได้หรือไม่ถ้าเปิดได้แสดงว่าทำการรีสโตร์ถูกต้อง แล้ว และดาต้าเบสนี้จะไม่ Suspect อีกต่อไป

Step-by-step การแบ็คอัพฐานข้อมูล Microsoft SQL Server 2005

22:06 เขียนโดย QA Optimization - Performance and Stability

การสำรองฐานข้อมูล the database.

1. ทำ การเปิดโปรแกรม Microsoft SQL Server Management Studio จาก Start->All Programs->Microsoft SQL Server 2005-> Microsoft SQL Server Management Studio ทำการ login gเข้าสู่โปรแกรม
2. คลิกขวาที่ฐานข้อมูลทีั่ตต้องการแบ็คอัพ เลือกมีนู Tastk->BackUp.. ตามรูปตัวอย่าง
Backup a SQL Server database

1. ระบบจะเปิดหน้าต่างแบ็คอัพข้อมูลของฐานข้มูลนั้นขึ้นมา ทำการละดับดังรูป
1. แสดงฐานข้อมูลทีจะแบ็คอัพ
2. เลือกชนิดการแบ็คอัพให้ทำการเลือก Full คือเลือกทำการแบ็คอัพทั้งหมดของฐานข้อมูล
3. ทำการใส่ชื่อที่ต้องการแบ็คอัพ ควรใส่นามสกุล .bxk ตัวอย่าง db_backup.baak
4. เลือกต่ำแหน่งที่ต้องการเก็บไฟล์แบ็คอัพ (ควรจำให้ได้ว่าเลือกไว้ไหนเพื่อจะได้ Copy ออกจากเครื่อง)
5. ทำการกดปุ่ม Ok

Select source and destination to backup
2. รอจนระบบจะทำการแบ็คอัพเสร็จ ระบบจะป๊อบอัพหน้าตางดังรูป






Backup success pop-up message

3. หาไฟล์ที่ได้ทำการแบ็คอัพไว้ปกติหาไม่เปลี่ยนจะเป็น “C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup”. ดังรูป

The backup file from SQL Server 2005 Server


รีสโตรฐานข้อมูล Restore the database.

การ จะทำเมื่อฐานเสียหายหรือว่าหรือว่าสูตรหาย เป็นต้น.

1. Copy ไฟล์แบ็คอับที่ได้ทำการเก็บไว้สู่เครื่องที่ติดตั้ง
The backup file
2. ทำ การเปิดโปรแกรม Microsoft SQL Server Management Studio จาก Start->All Programs->Microsoft SQL Server 2005-> Microsoft SQL Server Management Studio ทำการ login gเข้าสู่โปรแกรม
3. คลิกขวาที่ฐานข้อมูลที่ที่ต้องการ restroe เหลือมีนู Restroe Database ดังรูป
Restore the database
Restore the database
4. เลือกหัวข้อ 1 From device และคลิกป่ม 2 [...] buttton to browse file.
Select source device
Select source device
5. เลือกไฟล์ที่ต้องการแบ็คอัพ “File” and click Add.
Select the backup media to restore
Select the backup media to restore
6. เลือกไฟล์แล้ว Click OK. OK.
Select the backup file to restore
Select the backup file to restore
7. ระบบจะทำการเปิดหน้าต่าง Back to Restore Database window.ทำตามขั้นตอนดังรูป
1. เลือกฐานข้อมูลที่จะทำการ Restore ตัวย่างดังรูป
2. ทำการติกไฟล์ดังรูป
3. คลิก OK

Select a destination database to restore


Select a destination database to restore
8. ระจนระบบจะแสดงหน้าต่างดังรูป
Restore success pop-up message
Restore success pop-up message
9. ฐานข้อมูลจะกลับสู่สภาพดังที่ได้่ำทำการ แบ็คอัพ
The restored database on SQL Server 2005
The restored database on SQL Server 2005

Backup Database MS SQL Server

22:02 เขียนโดย QA Optimization - Performance and Stability

ขั้นตอนเริ่มต้นต้องเปิดใช้งาน Service SqlserverAgent เพราะเราจะใช้ job schedule ทำงาน
เมื่อเปิด service sqlserveragent เรียบร้อยแล้ว ใช้ Script ดังนี้

declare @CurDD VARCHAR(15)
declare @Path nvarchar(200)
select @CurDD = CONVERT(VARCHAR, GETDATE(), 112)
if @CurDD is not NULL
begin
set @Path=’D:MSSQLMSSQLbackup’+@CurDD
BACKUP DATABASE [ชื่อดาต้าเบส]
TO DISK = @Path WITH NOFORMAT, NOINIT,
NAME = N’ชื่อดาต้าเบส-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD,
STATS = 10
end

Note: เมื่อใส่ script ที่ job schedule แล้ว ตัวหนังสือ hilight สีเข้มเอาไว้ เปลี่ยน path ที่เก็บไฟล์ Backup ว่าจะให้วางไว้ที่ไหน โดยชื่อไฟล์ จะเป็น วันที่ yyyyMMdd ตาม select @CurDD = CONVERT(VARCHAR, GETDATE(), 112)
(เรื่องการจัด format datetime ใน sqlserver)