imports system.data.sqlclient
public class form1
'備份資料庫
'backup database test to disk='' with format sql語句
private sub btnbackup_click(sender as object, e as eventargs) handles btnbackup.click
dim conn as sqlconnection
conn = new sqlconnection("data source=.;initial catalog=test3;user id=sa;password=123456")
dim cmd as sqlcommand
dim path as string
'選擇備份路徑
folderbrowserdialog1.showdialog()
path = folderbrowserdialog1.selectedpath
if path = nothing then
messagebox.show("檔名不能為空", "系統提示")
exit sub
end if
'執行sql命令語句,備份資料庫
cmd = new sqlcommand("backup database test3 to disk='" & path & "\backup' with format,backup log with norecovery", conn)
conn.open()
trycmd.executenonquery()
catch ex as exception
msgbox(ex.message, msgboxstyle.okonly, "系統提示")
exit sub
end try
msgbox("備份成功")
conn.close()
end sub
'還原資料庫
private sub btnrecovery_click(sender as object, e as eventargs) handles btnrecovery.click
if msgbox("真的要還原嗎?資料會恢復到最近備份的資料!", msgboxstyle.yesno, "系統提示") = msgboxresult.yes then
dim cn as new sqlconnection
dim cn1 as new sqlconnection
dim mydr as sqldatareader
dim str as string
dim tmpconnectionstring as string = "data source=.;initial catalog=test3;user id=sa;password=123456;pooling=false"
dim all as string
'獲取當前檔名篩選器字元
me.openfiledialog1.filter = "所有檔案(*.*)|*.*|備份檔案(*.bak)|*.bak"
me.openfiledialog1.showdialog()
all = openfiledialog1.filename
if all = nothing then
messagebox.show("檔名不能為空", "系統提示")
exit sub
end if
cn.connectionstring = tmpconnectionstring
cn1.connectionstring = tmpconnectionstring
cn.open()
cn1.open()
'查詢與資料庫有關的程序
dim cm as sqlcommand = new sqlcommand("use master select spid from master..sysprocesses where dbid=db_id('test3')", cn)
mydr = cm.executereader()
dim cm1 as sqlcommand = new sqlcommand()
cm1.connection = cn1
while (mydr.read())
'殺死程序
str = "kill " & mydr("spid").tostring()
cm1.commandtext = str
cm1.commandtype = commandtype.text
cm1.executenonquery()
end while
mydr.close()
'使要還原的資料庫離線
cm = new sqlcommand("alter database test3 set offline with rollback immediate", cn)
cm.executenonquery()
'恢復備份
cm = new sqlcommand("restore database test3 from disk='" & all & "' with replace", cn)
cm.executenonquery()
'使要還原的資料庫聯機
cm = new sqlcommand("alter database test3 set online with rollback immediate", cn)
cm.executenonquery()
msgbox("恢復成功,軟體自動關閉,請重新啟動本系統!")
'關閉資料庫連線
在sql語句前新增use master 即
use master select spid from master..sysprocesses where dbid=db_id('test3')
user master表示在master資料庫執行該語句,spid指當前使用者程序的會話 id,master是系統資料庫,它裡面有很多物件,每個物件都有自己的所有者.如果沒有指明所有者,系統就預設dbo為物件的所有者.乙個物件完整的表示式為:資料庫名.所有者.物件, 比如:master.dbo.sysobjects。殺程序前當然要先找出當前該資料庫所有的程序了。
直接用sql語句還原資料庫。
方法一:
在還原之前先將該資料庫離線,恢復之後再聯機。前後加上兩條sql語句即可。
alter database [datebase] set offline with rollback immediate
alter database [ datebase] set online
方法二:
(該方法採取限制訪問資料庫的方式,因為實際中我們經常多使用者訪問,所以符合情況時再考慮這種解決方法吧。)
在還原的時候還有其他程序連在上面,導致無法獲得獨佔造成的,可以使用資料庫的單使用者模式,設定方式:選中要還原的資料庫-->屬性-->選項-->限制訪問,該值從multi_user修改為single_user。
以下是gui的模式,語句比較簡單
use master
go alter databaseeol_tcgroup set single_user with rollback immediate;
go
恢復資料庫備份
利用檔案組備份恢復破壞的檔案 restore database bbb from disk d aaaabackup 1.bak with norecovery 還原到日誌點 restore log bbb from disk d aaaabackup 2.trn with norecovery r...
mysqldump備份恢復資料庫
mysql資料庫提供了乙個很好用的工具mysqldump用以備份資料庫,下面將使用mysqldump命令進行備份所有資料庫以及指定資料庫 一 mysqldump一次性備份所有資料庫資料 usr local mysql bin mysqldump u使用者名稱 p密碼 all databases 儲存...
備份資料庫恢復資料庫
備份資料庫,恢復資料庫 2 登入到mysql客戶端,刪除mydb1庫 刪除mydb1庫 drop database mydb1 查詢所有庫,是否還存在mydb1庫 show databases 由於備份時,沒有備份資料庫本身,所以在恢復庫中的資料前,需要先建立好要恢復的庫 建立mydb1資料庫 cr...