โดยปกติแล้วการ 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 นี้ด้วยครับ
แล้วก็สร้าง 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
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.Connection = SqlConnection1
cmdBackup.CommandText = strSQL
cmdBackup.ExecuteNonQuery()
MsgBox("finish")
Catch ex As Exception
MsgBox("Error")
End Try
MsgBox("finish")
Catch ex As Exception
MsgBox("Error")
End Try
Cursor = Cursors.Arrow
SqlConnection1.Close()cmdBackup.Dispose()cmdBackup = Nothing
SqlConnection1.Close()cmdBackup.Dispose()cmdBackup = Nothing
End Sub
ลองรันดูครับ
เมื่อรันเสร็จ จะมี message box บอกว่า Finish แล้วไปดูที่ C: จะพบว่ามีไฟล์ mybackup.bak
เมื่อรันเสร็จ จะมี message box บอกว่า Finish แล้วไปดูที่ C: จะพบว่ามีไฟล์ mybackup.bak
ก็เป็นอันเสร็จเรียบร้อยครับ
ถ้าเราตัองการเก็บไฟล์ backup เป็นหลายๆไฟล์ เราก็อาจจะเขียนโปรแกรมให้สร้างชื่อตามวันที่ก็ได้ครับ เช่น myBackup20070311.bak เป็นต้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น