Membuat Aplikasi Backup Dan Restore Database Ms SQL Server 2005 Di VB. Net

Kali ini saya ingin berbagi mengenai bagaimana membuat aplikasi untuk membackup dan merestore database yang menggunakan Ms SQL Server 2005 sebagai DBMS nya. Aplikasi ini berbasis Visual Basic.NET 2010.

Hal yang pertama kita siapkan ialah membuat "User Login" terlebih dahulu di Ms SQL Server 2005 itu sendiri, dimana "User Login" ini akan kita gunakan nanti sebagai langkah Restore Database. Masuk ke aplikasi Ms SQL Server Management Studio nya. Lalu login seperti biasa (Menggunakan Windows Authentication). Setelah login, akan muncul menu "Security" di Object Explorer. Expand "Security" tersebut, kemudian klik kanan pada menu "Logins" dan pilih "New Login".


Setelah itu akan muncul jendela baru, pada "Login name" isikan nama yang akan dijadikan sebagai loginnya. Kemudian pilih "SQL Server Authentication" dan masukkan password dari login baru ini.


Kemudian pilih page "Server Roles" tepatnya pada deretan page di bagian kiri jendela. Dan centang "public" serta "sysadmin" pada "Server Roles".


Lalu pilih page "User Mapping". Lakukan seperti gambar dibawah ini.


Klik "OK" dan "Login Baru" pun terbuat.

Setelah itu buka Ms Visual Studio 2010, dan buat "Project" baru dengan 2 buah form di dalamnya. Berikut contoh tampilan kedua "Windows Form" yang disarankan. Jangan lupa tambahkan tools "OpenFileDialog" untuk form "Restore" dan "SaveFileDialog" untuk form "Backup".



Dan berikut baris syntax untuk form "Backup".

Imports System.Data.SqlClient

Public Class BackupDB

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim fdlg As SaveFileDialog = New SaveFileDialog()
fdlg.Title = "Simpan Backup File(Bak FIle)"
fdlg.InitialDirectory = "c:\"
fdlg.Filter = "All files (*.*)|*.*|BAK FIle (*.bak*)|*.bak"
fdlg.FilterIndex = 2
fdlg.RestoreDirectory = True
If fdlg.ShowDialog() = DialogResult.OK And fdlg.FileName <> TextBox1.Text & ".BAK" Then
TextBox2.Text = fdlg.FileName
ElseIf fdlg.ShowDialog() = DialogResult.OK And fdlg.FileName = TextBox1.Text & ".BAK" Then
MessageBox.Show("Maaf Nama File Backup Tidak Boleh Sama Dengan Nama File Database", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub

Private Sub BackupDB_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim CRdatabase As New SqlCommand("select DB_NAME()", connect)
Dim bacaDB As SqlDataReader
bacaDB = CRdatabase.ExecuteReader
bacaDB.Read()
TextBox1.Text = bacaDB(0)
TextBox1.ReadOnly = True
TextBox2.Focus()
End Sub
Sub MulaiBackup()
Dim backup As SqlCommand
Try
backup = New SqlCommand("BACKUP DATABASE [" & TextBox1.Text & "] TO  DISK = N'" & TextBox2.Text & "' WITH NOFORMAT, NOINIT,  NAME = N'radjasyiffa-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10", connect)
backup.ExecuteNonQuery()
backup.Dispose()
MessageBox.Show("Proses Backup Database " & TextBox1.Text & " Berhasil Dilakukan!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("Proses Backup Database " & TextBox1.Text & " Berhasil Dilakukan!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
MessageBox.Show(ex.Message)
End Try
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox2.Text = "" Then
MsgBox("Silahkan cari tempat penyimpanan", MsgBoxStyle.Critical)
Else
MulaiBackup()
End If
End Sub
End Class

Sedangkan untuk baris syntax form "Restore"

Imports System.Data.SqlClient

Public Class RestoreDB
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim fdlg As OpenFileDialog = New OpenFileDialog()
fdlg.Title = "Cari Backup File(Bak FIle)"
fdlg.InitialDirectory = "c:\"
fdlg.Filter = "All files (*.*)|*.*|BAK FIle (*.bak*)|*.bak*"
fdlg.FilterIndex = 2
fdlg.RestoreDirectory = True
If fdlg.ShowDialog() = DialogResult.OK Then
TextBox2.Text = fdlg.FileName
End If
End Sub

Private Sub BackupDB_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim CRdatabase As New SqlCommand("select DB_NAME()", connect)
Dim bacaDB As SqlDataReader
bacaDB = CRdatabase.ExecuteReader
bacaDB.Read()
TextBox1.Text = bacaDB(0)
TextBox1.ReadOnly = True
TextBox2.Focus()
End Sub

Sub MulaiRestore()
'connect merupakan koneksi utama yang disimpan di dalam module utama koneksi
Dim con2 As New SqlConnection
con2.ConnectionString = "Data Source=.;Initial Catalog=master;User ID=kelasinformatika;Password=kelasinformatika"
con2.Open()
connect.Close()
Dim restore As SqlCommand
'Dim users1 As New SqlCommand("ALTER DATABASE [" & TextBox1.Text & "] SET OFFLINE WITH ROLLBACK AFTER 0 SECONDS", connect)
Dim users1 As New SqlCommand("ALTER DATABASE [" & TextBox1.Text & "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE", con2)
users1.ExecuteNonQuery()
Try
restore = New SqlCommand("RESTORE DATABASE [" & TextBox1.Text & "] FROM  DISK = N'" & TextBox2.Text & "' WITH  FILE = 1,  NOUNLOAD,  STATS = 10", con2)
restore.ExecuteNonQuery()
restore.Dispose()
Dim users As New SqlCommand("ALTER DATABASE [" & TextBox1.Text & "] SET MULTI_USER WITH ROLLBACK IMMEDIATE", con2)
users.ExecuteNonQuery()
MessageBox.Show("Proses Restore Database " & TextBox1.Text & " Berhasil Dilakukan!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("Proses Restore Database " & TextBox1.Text & " Gagal Dilakukan!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
MessageBox.Show(ex.Message)
End Try
con2.Close()
'connect.Open()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox2.Text = "" Then
MsgBox("Silahkan cari tempat penyimpanan", MsgBoxStyle.Critical)
Else
MulaiRestore()
End If
End Sub
End Class

Mudah-mudahan dapat bermanfaat, mohon maaf jika kata-kata yang disampaikan kurang berkenan. Jika ada saran, kritik atau pertanyaan, silahkan layangkan komentarnya.

8 Komentar

  1. Thanks banget bro

    BalasHapus
    Balasan
    1. Terima kasih sob atas kunjungannya dan komentarnya, senang jika website ini dirasa bermanfaat.

      Hapus
  2. Terima kasih untuk tutor nya. Sangat membantu. Namun saya ada masalah dalam Restore DB pada prosedur MulaiStore(). Pada line berikut:

    "Dim users1 As New SqlCommand("ALTER DATABASE [" & TextBox1.Text & "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE", connRestore)
    users1.ExecuteNonQuery()"

    Selalu muncul error seperti ini:

    "Changes to the state or options of database 'Asset' cannot be made at this time. The database is in single-user mode, and a user is currently connected to it.
    ALTER DATABASE statement failed."

    Penyebabnya apa ya? Terima kasih

    BalasHapus
    Balasan
    1. Kemungkinan besar masalahnya muncul di sql nya sob, coba cek lagi. Di object explorernya apakah db yang digunakan sudah single user? kalo iya ubah jadi multi user dulu. Script SQL untuk merubah menjadi multi user bisa ditambahkan di formnya, jika tidak memungkinkan untuk membuka sql management nya.

      Terima kasih atas kunjungannya, mohon maaf atas keterlambatan dalam menjawab pertanyaan dan mohon maaf juga jika jawabannya kurang memuaskan.

      Hapus
  3. asa kenal admin na.. hehehe

    BalasHapus
  4. User does not have permission to alter database 'D:\MYDOC\VISUAL STUDIO 2010\PROJECTS\RENTAL MOBIL\RENTAL MOBIL\BIN\DEBUG\mydata.MDF', the database does not exist, or the database is not in a state that allows access checks.
    ALTER DATABASE statement failed.



    klo error nya seperti itu, solusinya gimana Gan ? :D

    BalasHapus
  5. ada yang pke mysqlnya gk om ?

    BalasHapus
  6. Error 5 'connect' is not declared. It may be inaccessible due to its protection level.
    rumus connect.Close() kok gak mau jalan yaaa pada bagian connect nya ada garis bawah warna biru ? mohon bantuannya gan. thanks

    BalasHapus
Lebih baru Lebih lama