You are on page 1of 6

Membuat Prosedur Backup/Restore MsSQL Setelah program kita buat kemudian data telah di-entri-kan serta telah di laporakan

maka ada satu prosedure lagi yg biasa dan perlu kita lakukan. Yaitu membuat backup data tsb. Kenapa musti di backup ? Kenapa musti membuat cadangan ? Agar kalo rusak kita masih memiliki cadangannya. Betul sekali.anda benar ! Kebetulan jg program yg mau saya sampekan disini aslinya saya modifikasi dari sample sebuah buku VB.net mmmm saya lupa karangan siapa. Kemudian saya coba buat pake VisualFoxpro dan berhasil dg bagus Nah selanjutnya dari vfp saya coba buat lagi ke PBnah inilah yg akan kita buat Pada dasarnya logika dari prosedure ini adalah sbb : 1. Untuk backup/restore kita manfaatkan device object backup/restore dari mssql, jadi kita akan membuat device object untuk itu nantinya. 2. Selanjutnya kita akan menjalankan device object itu dari aplikasi PB kita. 3. Untuk backup, walo database mssql sedang dipakaiproses ini bisa dijalankan 4. Nah untuk restoredatabase mssql hrs tdk sedang dipakai.maka jika anda perhatikan nantinya pada saat restore koneksi akan dipindah ke database master. Sekarang coba mari kita buat sebuah aplikasi khusus untuk backup/restore :

Dari gambar itu anda tahukan apa yg hrs anda lakukan Artinya anda musti membuat workspace bernama backrest, begitu juga target aplikasinya, 1 function untuk konek bernama f_konekke dan 1 lagi window dg nama w_backrest.

mztolo 2006 membuat prosedure backup/restore mssql

Buat function f_konekke dg isi spt ini :

Isi koding-nya spt ini : (perhatikan gambar di atas) SQLCA.DBMS = "ODBC" SQLCA.Lock = "RU" SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='driver=sql server; server=guzrud;database=+ nmdatabase +;',CommitOnDisconnect='No'"

Selanjutnya isi koneksi di open event target aplikasi anda spt ini : f_konekke(employees) open(w_backrest) Di close event target aplikasi itu : Disconnect ; Perhatikan : Guzrud adalah contoh nama server-nyasesuaikan dg nama server anda. Employees adalah nama databasenyasesuaikan juga jgn lupa. Simpan perubahan di atas dan selanjutnya modifikasi window w_backrest anda menjadi spt ini :

mztolo 2006 membuat prosedure backup/restore mssql

Tampak disana ada : 2 radio button 1 single line edit 3 command button Isi koding click event dari tombol batal sbb : Close(parent) Tambahkan di Instance Variables sbb : string ls_path, ls_file int li_rc Isi click event tombol dg ini : if rb_1.checked then ls_path = sle_1.Text
li_rc = GetFileSaveName ( "Pilih File", ls_path, ls_file, "bck", "All Files (*.*),*.*" )

IF li_rc = 1 Then sle_1.Text = ls_path End If else


If GetFileOpenName("Pilih File", ls_Path, ls_File, "bck", "All Files (*.*),*.*" ) = 1 Then

li_rc = Pos(ls_Path, ls_File) ls_Path = Left(ls_Path, (li_rc - 1)) sle_1.Text = ls_Path + ls_File End If end if Tambahan : GetFileSaveName berguna untuk menentukan nama file apa yg akan kita pake/save sbg file backupnya. bck adalah extension file bakcupnyauntuk hal ini anda bisa ganti dg extension yg anda kehendaki. GetFileOpenName tentunya untuk membuka/mengambil file backup yg ada untuk kita lakukan restore. Isi click event tombol Proses adalah sbb : // mztolo www.irenk.com 29092006
sqlca.autocommit=true string ls_check int i_flag ls_check="exec sp_helpdevice bckdataku ;" execute immediate :ls_check ; if SQLCA.sqlcode = -1 then i_flag = 0 else i_flag = 1 end if

mztolo 2006 membuat prosedure backup/restore mssql

if i_flag = 1 then string ls_drop ls_drop ="exec sp_dropdevice bckdataku ;" execute immediate :ls_drop ; if SQLCA.sqlcode = -1 then MessageBox("Drop Device Object Error !", SQLCA.sqlerrtext) i_flag = 1 else i_flag = 0 end if end if if i_flag = 0 then string ls_create ls_create ="exec sp_addumpdevice 'disk','bckdataku', '"+ trim(sle_1.text) + "' ;" execute immediate :ls_create ; if SQLCA.sqlcode = -1 then MessageBox("Create Device Object Error !", SQLCA.sqlerrtext) else if rb_1.checked then string ls_back ls_back="backup database employees to bckdataku ;" execute immediate :ls_back ; if SQLCA.sqlcode = -1 then MessageBox("Backup Database Error !", SQLCA.sqlerrtext) else MessageBox(":)","BackUp Sukses !!") end if sqlca.autocommit=false else // putus koneksi dari employees disconnect ; // koneksi ke master database f_konekke("master") string ls_rest ls_rest="restore database employees from bckdataku ;" execute immediate :ls_rest ; if SQLCA.sqlcode = -1 then MessageBox("Restore Database Error !", SQLCA.sqlerrtext) else MessageBox(":)","Restore Sukses !!") end if // putus koneksi dari master disconnect ; // kembalikan ke koneksi employees f_konekke("employees") end if end if end if

mztolo 2006 membuat prosedure backup/restore mssql

Tambahan : Untuk menjalankan sebuah perintah SQL di PB kita bisa melakukan dg perintah execute
immediate diikuti command/perintah SQL nya. Perintah ini akan jalan jika autocommit = true

Maka jika anda perhatikan di awal prosedur ini autocommit di set menjadi true. Kalo dari awal sudah kita set true gimana ? Ya nggak perlu lagi to mas Selanjutnya cek apakah device object telah ada ? exec sp_helpdevice bckdataku ;
Jika sudah ada maka hapus exec sp_dropdevice bckdataku ; Jika belum ada maka create exec sp_addumpdevice 'disk','bckdataku', '"+ trim(sle_1.text) + "' ;

Untuk backup lakukan perintah berikut backup database employees to bckdataku ; Untuk restore lakukan perintah berikut restore database employees from bckdataku ; Sewaktu backup database sedang aktif jg tdk apa2walo alangkah bagusnya dan safetynya jika semua transaksi sudah close. Kalo restore ? Wajib semua sudah close atau koneksi tidak ada terhadap database tsb. Maka jika anda perhatikan sample di atas ada proses disconnect database employees dan konek ke master.dan setelah selesai dikembalikan ke koneksi employees Sekarang coba jalankan aplikasi anda

Perhatikan pilihan ujicoba ini yg pertama adalah Backup, kemudian klik tombol sampai tampak spt ini :

mztolo 2006 membuat prosedure backup/restore mssql

Ketik nama file backup-nya bckemployees dan klik tombol Save maka tampilan layar akan spt ini :

Klik tombol Proses .. Yaappppss backup sukses !!

Dan jika anda lihat di direktory tempat backup tadi maka tampak ada file bckemployees.bck spt tampak berikut ini :

Dan jika anda lihat di Manajemen Backup MsSQL anda :

Tampak ada device object untuk backup/restore tersebut. Lalu bagaimana dg proses restore ? Hehehehe coba anda lakukan sendiri Ok dg demikian sample pembuatan utility backup/restore sudah selesai Apakah hrs terpisah aplikasinya dg aplikasi lain ? Nggak juga. Modul ini bisa kok anda tambahkan di aplikasi yg sudah ada. Cuma logikanya spt di atas. Kalo saya pake TRY ... CATCH boleh nggak tuk trap errornya ? Boleh aja Akhir kata .. Sukses untuk anda !!

mztolo 2006 membuat prosedure backup/restore mssql

You might also like