客戶端備份與恢復MSSQL Server數據庫_Mssql數據庫教程
推薦:談SQL Server的空值處理策略數據完整性是任何數據庫系統要保證的重點。不管系統計劃得有多好,空數據值的問題總是存在。本文探討了在SQL Server中處理這些值時涉及的3個問題:計數、使用空表值以及外鍵處理。 用COUNT(*)處理空值 大多數集合函數都能在計算時消除空值;COUNT函數則屬于例
摘要:本文以SQL SERVER為例,總結了常用的幾種備份和恢復數據庫的方法,分析了作業機制的原理,并提出了一種以作業機制實現恢復和備份數據庫的方法。用戶可以不打開數據庫管理器,在應用程序客戶端就可以方便地實現數據庫的備份和恢復。
關鍵詞: 備份 恢復 作業機制 數據庫
1.概述
備份和恢復是數據庫管理員維護數據庫安全性和完整性的重要操作。備份是恢復數據庫最容易和最能防止意外的保證方法。沒有備份,所有的數據都可能會丟失。備份可以防止表和數據庫遭受破壞、介質失效或用戶錯誤而造成數據災難。恢復是在意外發生后,利用備份來恢復數據庫的操作。任何數據維護無論是基于C/S還是B/S的信息管理系統都必須具有備份和恢復數據庫的功能。
作為強大數據庫SQL SERVER的管理器ENTERPRISE MANAGER,其本身也提供了幾種實現和恢復數據庫的方法,但這幾種方法實現起來,都需要用戶對ENTERPRISE MANAGER相當熟悉,而且處理步驟較繁鎖,操作起來容易發生失誤。因此我們就需要一種更加簡便可行的實現方法。
2.常用的備份和恢復數據庫的方法
在SQL SERVER ENTERPRISE MANAGER是一種強大的管理工具,它能完成很多功能,備份和恢復數據庫是其中的一項基本功能。歸結起來,借助這個管理工具有三種常用的方法實現備份和恢復數據庫。
⑴ 完全手工方式。在這種方式下,選擇要備份和恢復的數據庫,單擊鼠標右鍵,在快捷菜單中的“ALL TASKS”下選擇備份或者恢復數據庫。這種方式,用戶要進行很多步操作,其中要涉及到一些參數,使用起來容易出錯,尤其對新手來講,一旦操作失誤可能帶來很大的損失。
⑵ 半手工方式。這種方式就是管理員事先建立備份或者恢復數據庫的作業,待到備份或者恢復數據庫的時候,管理員打開“SQL SERVER ENTEPRISE MANAGER”,在“MANAGER”里找到相應的作業,然后執行之。這種方式,雖然是基于作業方式實現的,但是管理員必須打開數據庫管理器,而且要在繁多的作業中進行選擇。一旦選擇錯誤并執行之,有可能帶來意想不到的損失。
⑶ 全自動方式。在數據庫管理器里面,管理員事先建立好恢復或者備份數據庫的作業,然后定制一個執行計劃,讓計算機在特定的條件下自己執行備份和恢復操作。這種方式看起來簡單、省事,但是機器在異常情況(如掉電)下,就不能按照計劃執行了。
3.作業機制的工作原理
作業是ENTERPRISE MANAGER提供的一種定期處理數據的一種方法,前面提到的半手工方式和全自動方式雖然利用了作業,但它需要在ENTERPRISE MANAGER里啟動和關閉作業;我們要討論的是在應用程序客戶端啟動和關閉作業的機制。
作業機制的工作原理,由控制體和執行體兩大部分構成。
控制體顧名思義就是控制作業執行的實體,靠具體編程實現。實現時,要調用MSDB數據庫的系統存儲過程SP_START _JOB,SP_END_JOB等等,同時要訪問表SYSJOBHITORY,獲取作業執行狀態。
執行體就是作業執行的整體,應用系統投入使用時建立。應用系統安裝時,要建立數據庫、備份和恢復設備、備份和恢復作業。
控制體由用戶觸發,啟動相應的作業,交由執行體執行作業,在執行過程中,執行體執行的每一步狀態信息都要寫入MSDB數據庫的SYSJOBHISTORY表里。同時,控制體不斷獲取執行狀態信息,根據這些信息,控制體決定繼續執行還是停止該作業。在作業執行完畢或者出錯停止后,控制體向用戶反饋執行結果。
4.以作業機制實現數據庫的備份和恢復
為了便于解釋我們以POWER BUILDER實現的一個具體系統為示例,首先看數據庫備份的實現步驟。
4.1 執行體的建立
(1)建立應用系統的數據庫XCCXXT。
(2)建立備份數據庫所使用的設備XCCXXTBAK.DAT。
(3)建立備份作業XCCXXT BACKUP,其中命令行為BACKUP DATABASE XCCXXT TO DISK=“C:\MSSQL7\DATA\BACKUP\XCCXXTBAK.DAT”。
4.2 控制體的實現
在相應對象的“備份”按鈕的click事件中寫入以下代碼:
//聲明相應的變量
string ls_database,ls_pass,ls_date,ls_time
integer li_gs,li_gs_o
transaction login_trans
login_trans = creat transaction
IF MessageBox("提示信息","是否真的要進行數據備份操作?", &
Exclamation!,OKCancel!,2)<>1 then return
//連接MSDB數據庫
login_trans.database = "msdb"
connect using login_trans;
if login_trans.sqlcode <> 0 then
messagebox("數據庫錯誤信息",login_trans.sqlerrtext)
return
end if
//檢測上次該執行體執行結果,用以區別本次執行狀況
select max(instance_id) into :li_gs_o from sysjobhistory using login_trans;
if isnull(li_gs_o) then li_gs_o =0
login_trans.autocommit = true
ls_pass = login_trans.logpass
//運行系統存儲過程SP_START_JOB,啟動執行體
prepare sqlsa from "sp_start_job ?" using login_trans;
if login_trans.sqlcode <> 0 then
messagebox("數據庫錯誤信息",login_trans.sqlerrtext)
login_trans.autocommit = false
disconnect using login_trans;
login_trans.database = ls_database
return
end if
EXECUTE sqlsa USING ‘XCCXXT BACKUP’;
//檢測執行體啟動是否正常
if login_trans.sqlcode <> 0 then
messagebox("數據庫錯誤信息",login_trans.sqlerrtext)
login_trans.autocommit = false
disconnect using login_trans;
return
end if
//檢測執行體執行的整個過程
DO
uf_sleep (1)
select max(instance_id) into :li_gs from sysjobhistory using login_trans;
if isnull(li_gs) then li_gs =0
LOOP WHILE li_gs<=li_gs_o 1
//運行系統存儲過程SP_END_JOB,關閉執行體
prepare sqlsa from "sp_end_job ?" using login_trans;
if login_trans.sqlcode <> 0 then
messagebox("數據庫錯誤信息",login_trans.sqlerrtext)
login_trans.autocommit = false
disconnect using login_trans;
login_trans.database = ls_database
return
end if
EXECUTE sqlsa USING ‘XCCXXT BACKUP’;
//返回執行結果
li_gs_o=li_gs - 1
select run_
----------------------------------------------
s,run_date,run_time into :li_gs,:ls_date,
:ls_time from sysjobhistory where instance_id =:li_gs_o using login_trans;
if li_gs = 1 then
st_3.text = left(ls_date,4) '年' mid(ls_date,5,2) '月'
right(ls_date,2) '日' ' ' &
left(ls_time,2) ':' mid(ls_time,3,2) ':' right(ls_time,2)
messagebox('提示',"數據庫備份操作成功!")
else
messagebox('提示',"數據庫備份操作失敗!")
end if
//斷開與數據庫MSDB的連接
login_trans.autocommit = false
disconnect using login_trans;
if login_trans.sqlcode <> 0 then
messagebox("數據庫錯誤信息",login_trans.sqlerrtext)
end if
4.3 備份數據庫
用戶單擊“備份”按鈕,系統就會備份XCCXXT數據庫。結束時,會有相應成功與否的信息向用戶提示。
備份是對數據庫的進行讀操作,執行體執行之前不需要檢查用戶對數據庫的使用狀態。而恢復則是對整個數據庫進行寫操作,在啟動執行體之前一定要檢查是否有數據庫進行寫操作,否則容易導致失敗。其他恢復數據庫的實現步驟類似與備份,限于篇幅此處從略。
5. 結束語
以作業機制實現數據庫的恢復和備份,就是事先在建立備份和恢復數據庫的作業,在應用程序客戶端用控制體啟動相應的執行體來實現之。用這種方式實現數據庫的備份和恢復,用戶不必打開數據庫管理器進行操作,用戶可以在任何一個應用程序客戶端完成操作。
作業機制打破了我們常規對大型數據庫備份和恢復必須在數據庫管理器里進行的局限性,利用作業機制解決了在應用程序客戶端對數據庫備份和恢復的難題,為在應用程序客戶端實現復雜的數據庫維護提供了一個思路。
客戶端備份與恢復MSSQL Server數據庫
分享:怎樣用VB存取SQL Server中的圖像數據本文介紹MIS SQL Server對圖像數據的存儲機制和存取方法。針對VB開發工具,介紹了一種通過ADO Field 對象的GetChunk 方法和AppendChunk 方法來存取MIS SQL Server中的圖像數據的方法。 在一個完善的醫院信息MIS中,圖像數據的存取是必不可少的,比如X光片、C
- sql 語句練習與答案
- 深入C++ string.find()函數的用法總結
- SQL Server中刪除重復數據的幾個方法
- sql刪除重復數據的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數據庫,提示 無法為該請求檢索數據 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數的用法實例詳解
- 相關鏈接:
- 教程說明:
Mssql數據庫教程-客戶端備份與恢復MSSQL Server數據庫
。