Public Class Form1
' إنشاء كائن الإتصال '
Private con As New SqlClient.SqlConnection("Data Source=.;Integrated Security=SSPI;Connect Timeout=30")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Button1.Enabled = False
Me.Button2.Enabled = False
Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
Me.Show()
Dim dataSource As String = GetSetting(Application.ProductName, "SqlServer", "DataSource", ".\SqlExpress")
dataSource = InputBox("Sql Server: ", "SQLServer Name", dataSource)
If dataSource.Trim = "" Then End
Dim lblWait As New Label With {.Text = "Wait....", .TextAlign = ContentAlignment.MiddleCenter, .Dock = DockStyle.Fill}
lblWait.Parent = Me
lblWait.BringToFront()
Me.Cursor = Cursors.WaitCursor
Application.DoEvents()
Dim conBuiler As New SqlClient.SqlConnectionStringBuilder(con.ConnectionString)
conBuiler.DataSource = dataSource
con.ConnectionString = conBuiler.ConnectionString
Dim databases() As String = GetDatabases()
If Not IsNothing(databases) Then
SaveSetting(Application.ProductName, "SqlServer", "DataSource", dataSource)
Me.ComboBox1.Items.AddRange(databases)
Else
End
End If
Me.Cursor = Cursors.Default
lblWait.Hide()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Me.Button1.Enabled = True
Me.Button2.Enabled = True
End Sub
'لائحة قواعد البيانات '
Function GetDatabases() As String()
Try
Dim cmd As New SqlClient.SqlCommand("SELECT [name] FROM [sysdatabases] WHERE [name] NOT IN ('master','tempdb','model','msdb');", con)
If con.State <> ConnectionState.Open Then con.Open()
Dim reader As SqlClient.SqlDataReader = cmd.ExecuteReader
Dim dbs As New List(Of String)
While reader.Read
dbs.Add(reader.Item("name"))
End While
Return dbs.ToArray
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)
Return Nothing
Finally
con.Close()
Me.Cursor = Cursors.Default
End Try
End Function
'إنشاء النسخة الإحتياطية '
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'إنشاء النسخة الإحتياطية '
BackDatabase(Me.ComboBox1.Text)
End Sub
'إنشاء النسخة الإحتياطية '
Function BackDatabase(ByVal databaseName As String) As Boolean
Try
If databaseName.Trim = "" Then Return False
Me.Cursor = Cursors.WaitCursor
Dim dlgSaveFile As New SaveFileDialog()
dlgSaveFile.Title = "Backup database: " & databaseName
dlgSaveFile.Filter = "SQL Server database backup files|*.bak"
dlgSaveFile.FileName = databaseName
dlgSaveFile.RestoreDirectory = True
If dlgSaveFile.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
Me.Label2.Text = "جار إنشاء النسخة الإحتياطية لقاعدة البيانات..."
Application.DoEvents()
Dim cmd As New SqlClient.SqlCommand("BACKUP DATABASE " & databaseName & " TO DISK='" & dlgSaveFile.FileName & "'", con)
If con.State <> ConnectionState.Open Then con.Open()
cmd.ExecuteNonQuery()
Me.Label2.Text = ""
MessageBox.Show("تمت عملية إنشاء النسخة الإحتياطية بنجاح.", "معلومات", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return True
End If
Catch ex As Exception
MessageBox.Show("فشلت عملية إنشاء النسخة الإحتياطية لقاعدة البيانات." & vbNewLine & "Exception message :" & vbNewLine & vbTab & ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
MsgBox(ex.Message)
Return False
Finally
con.Close()
Me.Cursor = Cursors.Default
End Try
End Function
'استعادة قاعدة البيانات '
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'استعادة قاعدة البيانات '
RestoreDatabase(Me.ComboBox1.Text)
End Sub
'استعادة قاعدة البيانات '
Function RestoreDatabase(ByVal databaseName As String) As Boolean
Try
If databaseName.Trim = "" Then Return False
Me.Cursor = Cursors.WaitCursor
Dim dlgOpenFile As New OpenFileDialog()
dlgOpenFile.Title = "Restore database: " & databaseName
dlgOpenFile.Filter = "SQL Server database backup files|*.bak"
dlgOpenFile.RestoreDirectory = True
If dlgOpenFile.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
Me.Label2.Text = "جار استعادة قاعدة البيانات من النسخة الإحتياطية..."
Application.DoEvents()
Dim cmd As New SqlClient.SqlCommand("RESTORE DATABASE " & databaseName & " FROM DISK='" & dlgOpenFile.FileName & "'", con)
If con.State <> ConnectionState.Open Then con.Open()
cmd.ExecuteNonQuery()
Me.Label2.Text = ""
MessageBox.Show("تمت عملية استعادة قاعدة البيانات من النسخة الإحتياطية بنجاح.", "معلومات", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return True
End If
Catch ex As Exception
MessageBox.Show("فشلت عملية استعادة قاعدة البيانات من النسخة الإحتياطية." & vbNewLine & "Exception message :" & vbNewLine & vbTab & ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
Finally
con.Close()
Me.Cursor = Cursors.Default
End Try
End Function
End Class