วันพุธที่ ๒๔ ตุลาคม พ.ศ. ๒๕๕๐

โค้ด Backup Database สำหรับ SQLServer


โดยปกติแล้วการ Backup หรือ Restore รวมทั้งการ Maintenance RDBMS อย่าง SQLServer หรือ Oracle ควรให้ DBA ทำที่ตัว RDBMS เอง แต่ในบางกรณีเราอาจอยากให้ admin ของ application ที่เราพัฒนาขึ้นสามารถ backup/restore database จากหน้า form ที่เราสร้างขึ้น

กรณีนี้เราสามารถใช้คำสั่ง T-SQL (Transact SQL) ได้ครับ เรามาดู syntax ของคำสั่งก่อนครับ

BACKUP DATABASE { database_name @database_name_var }
TO <> [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date @date_var }
RETAINDAYS = { days @days_var } ]
[ [ , ] PASSWORD = { password @password_variable } ]
[ [ , ] FORMAT NOFORMAT ]
[ [ , ] { INIT NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' @text_variable } ]
[ [ , ] MEDIANAME = { media_name @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name @backup_set_name_var } ]
[ [ , ] { NOSKIP SKIP } ]
[ [ , ] { NOREWIND REWIND } ]
[ [ , ] { NOUNLOAD UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ] ]
สำหรับรายละเอียดลองดูใน Online Book ของ SQLServer นะครับ

สมมติว่าเราต้องการ backup database ลงใน folder ที่ต้องการ คำสั่งจะประมาณนี้ครับ

BACKUP DATABASE Northwind
TO DISK 'C:\Northwind.bak'
WITH FORMAT, NAME = 'NorthwindBackup'
คราวนี้เราลองมาดูการเขียนโปรแกรมเลยครับ สมมติว่า ผมสร้าง Form มา 1 ฟอร์ม สร้าง ปุ่มชื่อ btnBackup ขึ้นมา 1 ปุ่ม
แล้วก็สร้าง sqlConnection ชื่อ sqlConnection1 สำหรับ Form นี้ด้วยครับ




ทีนี้ก็มาดูโค้ด

Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBackup.Click

Dim strSQL As String
Dim strCon As StringstrCon = "Data Source=NITHI;Initial Catalog=master;Integrated Security=True"
Dim cmdBackup As SqlClient.SqlCommand = New sqlClient.SqlCommandSqlConnection1.ConnectionString = strConSqlConnection1.Open()
Cursor = Cursors.WaitCursor
Try

strSQL = "BACKUP DATABASE Northwind "
strSQL &= "TO DISK = 'C:\mybackup.bak' "
strSQL &= "WITH FORMAT, "
strSQL &= "NAME = 'myBackup'"
cmdBackup.Connection = SqlConnection1

cmdBackup.CommandText = strSQL
cmdBackup.ExecuteNonQuery()
MsgBox("finish")
Catch ex As Exception
MsgBox("Error")
End Try
Cursor = Cursors.Arrow
SqlConnection1.Close()cmdBackup.Dispose()cmdBackup = Nothing
End Sub
ลองรันดูครับ
เมื่อรันเสร็จ จะมี message box บอกว่า Finish แล้วไปดูที่ C: จะพบว่ามีไฟล์ mybackup.bak



ก็เป็นอันเสร็จเรียบร้อยครับ
ถ้าเราตัองการเก็บไฟล์ backup เป็นหลายๆไฟล์ เราก็อาจจะเขียนโปรแกรมให้สร้างชื่อตามวันที่ก็ได้ครับ เช่น myBackup20070311.bak เป็นต้น

ไม่มีความคิดเห็น: