NEWS

Ứng dụng backup database và nén vào một thư mục

Ứng dụng backup database và nén vào một thư mục
Đăng bởi: TONA Cody - Lượt xem: 10219 21:12:49, 18/01/2017VB.NET   In bài viết

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.


backup-database-sql-server-winrar-copy-ve-thu-muc-1
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á.

backup-database-sql-server-winrar-copy-ve-thu-muc-2

Nếu có gì thắc mắc vui lòng để lại coment !
Chúc vui !

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

Ứng dụng backup database và nén vào một thư mục
Đăng bởi: TONA Cody - Lượt xem: 10219 21:12:49, 18/01/2017VB.NET   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp