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.
Tags:
Pemrograman Visual Basic
Thanks banget bro
BalasHapusTerima kasih sob atas kunjungannya dan komentarnya, senang jika website ini dirasa bermanfaat.
HapusTerima kasih untuk tutor nya. Sangat membantu. Namun saya ada masalah dalam Restore DB pada prosedur MulaiStore(). Pada line berikut:
BalasHapus"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
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.
HapusTerima kasih atas kunjungannya, mohon maaf atas keterlambatan dalam menjawab pertanyaan dan mohon maaf juga jika jawabannya kurang memuaskan.
asa kenal admin na.. hehehe
BalasHapusUser 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.
BalasHapusALTER DATABASE statement failed.
klo error nya seperti itu, solusinya gimana Gan ? :D
ada yang pke mysqlnya gk om ?
BalasHapusError 5 'connect' is not declared. It may be inaccessible due to its protection level.
BalasHapusrumus connect.Close() kok gak mau jalan yaaa pada bagian connect nya ada garis bawah warna biru ? mohon bantuannya gan. thanks