Ứng dụng backup database và nén vào một thư mục
Xin giới thiệu với các bạn công cụ backup database, nén dữ liệu và upload lên FTP Server hoặc sao chép trong mạng LAN bằng VB.NET Được phát triển dựa theo bài viết của anh Thảo Meo Hướng dẫn Backup và nén Database Sqlserver và sau đó upload ...
Xin giới thiệu với các bạn công cụ backup database, nén dữ liệu và upload lên FTP Server hoặc sao chép trong mạng LAN bằng VB.NET
Được phát triển dựa theo bài viết của anh Thảo Meo Hướng dẫn Backup và nén Database Sqlserver và sau đó upload file lên FTP Server Bài viết này mình sẽ lấy ra danh sách tên các database trong server hiện có, sau đó chọn database và thực hiện backup. Đồng thời mình cũng chọn thư mục chứa để lưu bản backup vừa thực hiện.
Cách thực hiện:
Thiết kế một form bao gồm text box dùng để nhập tên server sql được cài đặt, một combobox chứa các database có trong server và nút lệnh thực thi truy vấn backup.
Nhấn F7 và code như sau:
Imports System.Data.SqlClient Imports System.IO Imports DevExpress.XtraSplashScreen Public Class Form1 Private Sub btn_duyet_Click(sender As Object, e As EventArgs) Handles btn_duyet.Click Dim folder_select As FolderBrowserDialog = New FolderBrowserDialog() If folder_select.ShowDialog = DialogResult.OK Then txt_folder_store.Text = folder_select.SelectedPath dgv_show.DataSource = Directory.GetFiles(txt_folder_store.Text, "*.*") End If End Sub Public Sub _Update(ByVal strLenh As String) open_connect() Dim d As String = "set dateformat dmy" Dim cmd1 As New SqlCommand(d, strconnect) cmd1.ExecuteNonQuery() Dim cmd As New SqlCommand(strLenh, strconnect) cmd.CommandTimeout = 0 cmd.ExecuteNonQuery() close_connect() End Sub Public strconnect As New SqlConnection Public Sub open_connect() Try strconnect.ConnectionString = "Server=" & Trim(txt_SQLserverName.Text) & ";Database=hob2016;Trusted_Connection=True;" strconnect.Open() Catch ex As Exception End Try End Sub Public Sub close_connect() strconnect.Close() End Sub Private Sub btn_backup_Click(sender As Object, e As EventArgs) Handles btn_backup.Click If txt_folder_store.Text.Length > 0 And cbo_database.Text.Length > 0 Then SplashScreenManager.ShowForm(GetType(SplashScreen1)) _Update("DECLARE @fname varchar(255) DECLARE @fname_backup varchar(255) DECLARE @fname_archive varchar(255) DECLARE @archive_path varchar(255) DECLARE @dbname varchar(255) DECLARE @archive_cmd varchar(255) DECLARE @put_cmd varchar(255) DECLARE @delFname_backup varchar(255) DECLARE @dir_taget varchar(255) DECLARE @copy VARCHAR(255) SET @dbname = '" & cbo_database.Text & "' SET @fname = @dbname + '_' + LTRIM(STR(DAY(GETDATE()))) + '.' + LTRIM(STR(MONTH(GETDATE()))) + '.' + LTRIM(STR(YEAR(GETDATE()))) + '_' + LTRIM(STR(DATEPART(HOUR,(GETDATE())))) + '.' + LTRIM(STR(DATEPART(MINUTE,(GETDATE())))) + '.' + LTRIM(STR(DATEPART(SECOND,(GETDATE())))) SET @archive_path = 'D:Backup' SET @fname_backup = @archive_path + @fname + '.BAK' SET @delFname_backup = 'del ' + @fname_backup SET @fname_archive = @archive_path + @fname + '.RAR' SET @archive_cmd = '""C:Program Files (x86)WinRARWinRAR.EXE"" a ' + @fname_archive + ' ' + @fname_backup SET @put_cmd = 'echo put ' + @fname_archive + '>> D:Backupftpcmds.txt' SET @dir_taget ='" & txt_folder_store.Text & "' + @fname + '.RAR' SET @copy='xcopy ' + @fname_archive + ' ' + @dir_taget +'*' PRINT @fname_backup PRINT @fname_archive BACKUP DATABASE @dbname TO DISK = @fname_backup WITH INIT EXEC xp_cmdshell @archive_cmd EXEC xp_cmdshell @delFname_backup exec xp_cmdshell @copy ") SplashScreenManager.CloseForm() dgv_show.DataSource = Directory.GetFiles(txt_folder_store.Text, "*.*") End If End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'load_servername() txt_SQLserverName.Focus() txt_SQLserverName.SelectAll() End Sub Private Sub btn_servername_Click(sender As Object, e As EventArgs) Handles btn_servername.Click Try open_connect() Dim ds As New DataSet Dim cmd As New SqlDataAdapter("select name from sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')", strconnect) ' lấy tất cả tên các database co torng server cmd.Fill(ds) close_connect() cbo_database.Properties.DataSource = ds.Tables(0) cbo_database.Properties.DisplayMember = "name" cbo_database.Properties.ValueMember = "name" strconnect.Close() Catch ex As Exception MessageBox.Show("Lỗi kết nối !") End Try End Sub End Class
Đoạn code khá là thông dụng rồi, nên xin phép không làm mất thời gian của mọi người.
Source ngay đây download xuống là có thể xài nhá.
Nếu có gì thắc mắc vui lòng để lại coment !
Chúc vui !
DOWNLOAD SOURCE