1: Imports SMOObject = Microsoft.SqlServer.Management.Smo
2: Imports Microsoft.SqlServer.Management.Common
3:
4: Public Class frmBackupRestore
5:
6: #Region "Variables Declaration"
7: Dim backup As SMOObject.Backup
8: Dim restore As SMOObject.Restore
9: #End Region
10:
11: #Region "Form's Events"
12: Private Sub frmBackupRestore_Load(ByVal sender As _
13: System.Object, ByVal e As System.EventArgs) _
14: Handles MyBase.Load
15: ToolStripProgressBar1.Visible = False
16:
17: lblBackUpServerName.Text = My.Settings.DataSource
18: lblBackUpDbName.Text = My.Settings.Database
19:
20: lblRestoreServerName.Text = My.Settings.DataSource
21: lblRestoreDbName.Text = My.Settings.Database
22: End Sub
23: #End Region
24:
25: #Region "Button's Events"
26: Private Sub btnBackup_Click(ByVal sender As System.Object, _
27: ByVal e As System.EventArgs) Handles btnBackup.Click
28: If txtFileBackupName.Text = String.Empty Then
29: MsgBox("Nama file belum diisi")
30: Exit Sub
31: End If
32:
33: If MessageBox.Show("Backup database?", _
34: "Konfirmasi", MessageBoxButtons.YesNo) = _
35: Windows.Forms.DialogResult.No Then Exit Sub
36:
37: Cursor = Cursors.WaitCursor
38: ToolStripProgressBar1.Visible = True
39:
40: Try
41: '//buat backup device nya
42: Dim bdi As New SMOObject.BackupDeviceItem
43: bdi.Name = txtFileBackupName.Text
44: bdi.DeviceType = SMOObject.DeviceType.File
45:
46: '//buat object backup
47: backup = New SMOObject.Backup
48: backup.Database = My.Settings.Database
49:
50: '//notifikasi untuk progress bar tiap 10%
51: backup.PercentCompleteNotification = 10
52: backup.Devices.Add(bdi)
53: backup.Initialize = True
54:
55: '//associate event percent complete
56: '//dengan add handler nya untuk
57: '//refresh progress bar value
58: AddHandler backup.PercentComplete, _
59: AddressOf BackupPercentComplete
60:
61: '//associate event backup complete
62: '//with its event handler
63: AddHandler backup.Complete, _
64: AddressOf BackupComplete
65:
66: '//create object server
67: Dim server As New SMOObject.Server( _
68: My.Settings.DataSource)
69:
70: '//do the backup process here...
71: backup.SqlBackup(server)
72:
73: Catch ex As Exception
74: ToolStripProgressBar1.Visible = False
75: MsgBox(ex.Message)
76: Finally
77: Cursor = Cursors.Default
78: End Try
79: End Sub
80:
81: Private Sub btnBackupLocation_Click(ByVal sender As _
82: System.Object, ByVal e As System.EventArgs) _
83: Handles btnBackupLocation.Click
84: If SaveFileDialog1.ShowDialog = _
85: Windows.Forms.DialogResult.OK Then
86: txtFileBackupName.Text = SaveFileDialog1.FileName
87: End If
88: End Sub
89:
90: Private Sub btnRestore_Click(ByVal sender As System.Object, _
91: ByVal e As System.EventArgs) Handles btnRestore.Click
92: If txtRestoreFileName.Text = String.Empty Then
93: MsgBox("Nama file belum diisi")
94: Exit Sub
95: End If
96:
97: If MessageBox.Show("Apakah backup akan di restore?", _
98: "Konfirmasi", MessageBoxButtons.YesNo) = _
99: Windows.Forms.DialogResult.No Then Exit Sub
100:
101: Cursor = Cursors.WaitCursor
102: ToolStripProgressBar1.Visible = True
103:
104: Try
105: '//buat backup device nya
106: '//tentukan nama file .bak
107: '//set ke file device type, karena tipe device
108: '//yang digunakan disini yaitu file
109: Dim bdi As New SMOObject.BackupDeviceItem
110: bdi.Name = txtRestoreFileName.Text
111: bdi.DeviceType = SMOObject.DeviceType.File
112:
113: '//create restore object
114: restore = New SMOObject.Restore
115: restore.Database = My.Settings.Database
116: restore.Action = SMOObject.RestoreActionType.Database
117: restore.PercentCompleteNotification = 10
118: restore.UnloadTapeAfter = True
119:
120: '//replace the existing database
121: restore.ReplaceDatabase = True
122: restore.Devices.Add(bdi)
123:
124: '//associate event percent complete
125: '//dengan add handler nya untuk
126: '//refresh progress bar value
127: AddHandler restore.PercentComplete, _
128: AddressOf RestorePercentComplete
129:
130: '//associate event restore complete
131: '//with its event handler
132: AddHandler restore.Complete, _
133: AddressOf RestoreComplete
134:
135: '//create object server
136: Dim server As New SMOObject.Server( _
137: My.Settings.DataSource)
138:
139: '//do the restore process here...
140: restore.SqlRestore(server)
141:
142: Catch ex As Exception
143: ToolStripProgressBar1.Visible = False
144: MsgBox(ex.Message)
145: Finally
146: Cursor = Cursors.Default
147: End Try
148: End Sub
149:
150: Private Sub btnRestoreLocation_Click(ByVal sender As _
151: System.Object, ByVal e As System.EventArgs) _
152: Handles btnRestoreLocation.Click
153: If OpenFileDialog1.ShowDialog = _
154: Windows.Forms.DialogResult.OK Then
155: txtRestoreFileName.Text = OpenFileDialog1.FileName
156: End If
157: End Sub
158: #End Region
159:
160: #Region "Event Handler Backup / Restore"
161: Private Sub BackupPercentComplete(ByVal sender As _
162: System.Object, ByVal e As SMOObject.PercentCompleteEventArgs)
163: '//update progress bar value
164: '//dan text label info
165: ToolStripProgressBar1.Value = e.Percent
166: lblInfo.Text = "Backup Progress " & e.Percent & " %"
167: lblInfo.Refresh()
168: End Sub
169:
170: Private Sub BackupComplete(ByVal sender As System.Object, _
171: ByVal e As ServerMessageEventArgs)
172: '//hapus handler dari event nya
173: RemoveHandler backup.PercentComplete, _
174: AddressOf BackupPercentComplete
175:
176: RemoveHandler backup.Complete, _
177: AddressOf BackupComplete
178:
179: '//get the info from server
180: '//if success or failed
181: lblInfo.Text = e.Error.Message
182:
183: ToolStripProgressBar1.Value = 0
184: ToolStripProgressBar1.Visible = False
185: Cursor = Cursors.Default
186: End Sub
187:
188: Private Sub RestorePercentComplete(ByVal sender As _
189: System.Object, ByVal e As SMOObject.PercentCompleteEventArgs)
190: '//update progress bar value
191: '//dan text label info
192: ToolStripProgressBar1.Value = e.Percent
193: lblInfo.Text = "Restore Progress " & e.Percent & " %"
194: lblInfo.Refresh()
195: End Sub
196:
197: Private Sub RestoreComplete(ByVal sender As System.Object, _
198: ByVal e As ServerMessageEventArgs)
199: '//hapus handler dari event nya
200: RemoveHandler restore.PercentComplete, _
201: AddressOf RestorePercentComplete
202:
203: RemoveHandler restore.Complete, _
204: AddressOf RestoreComplete
205:
206: '//get the info from server
207: '//if success or failed
208: lblInfo.Text = e.Error.Message
209: ToolStripProgressBar1.Value = 0
210: ToolStripProgressBar1.Visible = False
211: Cursor = Cursors.Default
212: End Sub
213: #End Region
214:
215: End Class