999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

應(yīng)用程序中數(shù)據(jù)庫自動備份的實現(xiàn)

2008-04-12 00:00:00王西鋒張曉孿
現(xiàn)代電子技術(shù) 2008年8期

摘 要:應(yīng)用系統(tǒng)的重要數(shù)據(jù)一般都存儲在數(shù)據(jù)庫中,為了避免這些數(shù)據(jù)遭到破壞或者丟失,加強數(shù)據(jù)庫的備份就很有必要。采用ASP.NET技術(shù),在VS.NET_2003和SQL SERVER 2000環(huán)境下,應(yīng)用C#語言和SQLDMO組件設(shè)計并實現(xiàn)了數(shù)據(jù)庫的自動備份功能,不僅保證了系統(tǒng)中數(shù)據(jù)的安全,也方便了用戶的操作;最后給出并分析了實現(xiàn)方法的關(guān)鍵代碼。

關(guān)鍵詞:ASP.NET;數(shù)據(jù)庫;SQL分布式管理對象;自動備份

中圖分類號:TP309.3文獻標(biāo)識碼:B

文章編號:1004-373X(2008)08-118-03

Implement of Database Automatic Backup in Application Program

WANG Xifeng,ZHANG Xiaoluan

(Baoji University of Arts Sciences,Baoji,721007,China)

Abstract:Nowadays,much important data of application systems are stored in databases,in order to avoid losing or destroying the data,it is significant to strengthen the functions of database′ backup function.Under VS.NET_2003 and SQL Server 2000 condition,the article implements database automatic backup manners by C# and SQLDMO,the ordinary users can operate the database conveniently.Moreover,it is assured the security of database.Finally,the article presents and analyzes some main source codes of the instance.

Keywords:ASP.NET;database;SQLDMO;automatic backup

收稿日期:2007-10-16

1 引 言

對于任何應(yīng)用系統(tǒng)而言,數(shù)據(jù)的安全性和可靠性都是至關(guān)重要的。但在計算機系統(tǒng)中普遍存在硬件故障、軟件錯誤、操作失誤等危及數(shù)據(jù)安全的因素,為了避免數(shù)據(jù)遭到破壞或丟失帶來不可挽回的損失,不論是C/S還是B/S結(jié)構(gòu)的應(yīng)用系統(tǒng),都應(yīng)該加強數(shù)據(jù)庫的備份功能以確保系統(tǒng)重要數(shù)據(jù)的安全。通常,數(shù)據(jù)庫系統(tǒng)都提供了備份功能,但其操作復(fù)雜而且需要一定的專業(yè)知識,并不適合普通用戶。因此,在應(yīng)用系統(tǒng)中通過程序給普通用戶提供操作簡便且功能強大的數(shù)據(jù)庫管理功能是很有必要的。

2 數(shù)據(jù)庫管理

備份是數(shù)據(jù)庫管理的重要功能,文獻[1]調(diào)用數(shù)據(jù)庫實用工具命令完成Oracle、Sybase的普通備份;文獻[2]給出了應(yīng)用ASP技術(shù)實現(xiàn)SQL數(shù)據(jù)庫遠(yuǎn)程備份和恢復(fù)的方法;文獻[3]提出并論證了數(shù)據(jù)庫實時備份的優(yōu)勢與安全性;在文獻[4]中設(shè)計并實現(xiàn)了常用的數(shù)據(jù)庫本地和異地等多種方式的備份和恢復(fù)功能,滿足了用戶的基本需求;不足的是這些功能都需要用戶實時手工操作才能進行,給用戶使用帶來一些不便。事實上,數(shù)據(jù)庫備份是一項需要定期和重復(fù)進行的工作,因而作為一種輔助的備份形式,自動備份的優(yōu)勢是顯而易見的。

自動備份就是在固定的時間,系統(tǒng)根據(jù)用戶的實際需求,自動啟動備份作業(yè)對數(shù)據(jù)庫進行備份,用戶僅需要配置一次自動備份的信息即可。在本文中,基于SQLDMO組件,在B/S結(jié)構(gòu)下編程實現(xiàn)了3種方式的自動備份功能,進一步完善了數(shù)據(jù)庫管理的功能,用戶可以根據(jù)自己的實際情況來選擇使用。

3 自動備份的設(shè)計與實現(xiàn)

3.1 關(guān)鍵技術(shù)

SQLDMO是SQL Server的COM組件,擁有60多種對象和1 000多種方法,是SQL企業(yè)管理器的應(yīng)用程序接口,其核心對象按照企業(yè)管理器的基本分層進行組織,可以根據(jù)對象的屬性和與對象關(guān)聯(lián)的方法編寫各種應(yīng)用程序管理SQL Server服務(wù)器;同時,ASP.NET是功能強大的服務(wù)器端技術(shù),其開發(fā)的應(yīng)用系統(tǒng)不僅結(jié)構(gòu)清晰,而且更易于維護和擴展。因此,本文的應(yīng)用程序是基于B/S結(jié)構(gòu)開發(fā)的,所有頁面均采用ASP.NET實現(xiàn)。編程實現(xiàn)時分為WEB和BLL兩層,其中WEB層是前臺,通過調(diào)用后臺的功能函數(shù)實現(xiàn)自動備份;BLL層作為后臺則封裝了如創(chuàng)建和刪除作業(yè)、備份以及獲取備份信息等功能函數(shù)。

3.2 建立與數(shù)據(jù)庫的連接

由于SQLDMO是來自COM對象的SQLDMO.dll,在使用前需要將SQLDMO的類型庫添加到C#的引用中,然后創(chuàng)建SQLDMO對象的實例,設(shè)置對象的方法以連接到SQL服務(wù)器上,最后運用該對象的方法實現(xiàn)功能。在實現(xiàn)自動備份前,首先需要應(yīng)用SQLServer對象的connect()方法建立系統(tǒng)與數(shù)據(jù)庫服務(wù)器的連接,其主要代碼如下[2,5]

Private SQLDMO.SQLServer server = 1;//創(chuàng)建一個對象

server.Connect(serverName,login,pwd); //和數(shù)據(jù)庫系統(tǒng)建立連接

…

server.DisConnect(); //完成操作后斷開和數(shù)據(jù)庫的連接

3.3 自動備份的設(shè)計與實現(xiàn)

在實現(xiàn)數(shù)據(jù)庫自動備份時,采用定時自動備份的方式,需要在BLL層使用SQLDMO組件創(chuàng)建SQLServe和Job的實例對象,再應(yīng)用其方法和屬性完成獲取備份信息函數(shù)GetMessage()、創(chuàng)建作業(yè)CreatJob()和刪除作業(yè)RemoveJob()等功能函數(shù),然后在實現(xiàn)WEB層的自動備份方式時,調(diào)用相應(yīng)的函數(shù)直接創(chuàng)建或撤銷SQL Server 2000→企業(yè)管理器→管理→SQL Server代理→作業(yè)下的一個定時作業(yè)。圖1給出了自動備份的頁面效果圖:

圖1 數(shù)據(jù)庫自動備份頁面

在圖2中,啟動自動定時備份功能以后,用戶只要選擇好備份方式(每天,每周,每月)、備份文件保存路徑、備份時間等參數(shù),確認(rèn)后便相應(yīng)地在SQL Server中新加了一個自動定時備份的新作業(yè),備份文件將按照用戶配置信息按時自動備份到相應(yīng)的目錄下。

3.3.1 每天定時備份的實現(xiàn)

每天定時備份就是在每一天的某個固定時間,系統(tǒng)自動執(zhí)行備份作業(yè)將數(shù)據(jù)庫信息備份到用戶選定的目錄下。實現(xiàn)時,首先從頁面獲取存儲路徑path、備份方式type、備份時間hour,minute,second等相關(guān)信息,然后調(diào)用BLL層的dayback()等函數(shù)來完成。選擇備份目錄時,用戶可以使用系統(tǒng)默認(rèn)的目錄,也可以選擇服務(wù)器上現(xiàn)有的目錄或自己新建目錄來存儲備份文件,選擇存儲目錄如圖2所示。

選擇好存儲目錄以后,就可以設(shè)置每天定時備份的其他配置,確認(rèn)后就可以在SQL Server代理下創(chuàng)建一個新的作業(yè)并刪除以前的其他作業(yè),其關(guān)鍵代碼如下[2,5,6]

private SQLDMO.Job oJob = 1;//創(chuàng)建一個作業(yè)實例

…

SQLDMO.JobStep oJobStep = 1;//添加作業(yè)步驟備份數(shù)據(jù)庫文件

oJob.Name = \"Backup_DbCida\";//新建作業(yè)名

server.JobServer.Jobs.Add(oJob);//添加作業(yè)

oJob.BeginAlter();

oJobStep.Command =\"declare @filename nvarchar(100)\" +\"set \" + savepath +\"print @filename BACKUP DATABASE [DbCida] TO DISK = @filename WITH NOINIT ,NOUNLOAD ,NAME = N′DbCida備份′,NOSKIP ,STATS = 10,NOFORMAT\";//備份數(shù)據(jù)庫

oJob.JobSteps.Add(oJobStep);//添加作業(yè)步驟

…

oJob = server.JobServer.Jobs.Item(\"Backup_DbCida\");//得到備份類型

SQLDMO.JobSchedule schedule = oJob.JobSchedules.Item(\"backup\");

oJob = server.JobServer.Jobs.Item(\"Backup_DbCida\");//得到每天調(diào)度計劃的詳細(xì)信息

string retStr = schedule.Schedule.ActiveStartTimeOfDay.ToString();//得到備份時間

schedule.Name = \"backup\";//調(diào)度任務(wù)名稱

….

BLL_Backup backup = new BLL_Backup();//根據(jù)備份信息備份

backup.RemoveJob();//判斷是否已有作業(yè),有的話刪除

backup.JobStep(type,\"DbCida\");//根據(jù)類型新建作業(yè)

backup.dayback(hour,minute,second,starttime);//調(diào)用函數(shù)進行每天定時備份

backup.DisConnect();//完成備份后斷開和數(shù)據(jù)庫的連接

在圖2中,用戶確認(rèn)所選的各項備份信息后,若自動定時備份作業(yè)創(chuàng)建成功的話,將彈出一個提示框告訴用戶作業(yè)添加完成。

圖2 選擇、創(chuàng)建備份目錄

[BT4+*2]3.3.2 每周定時備份的實現(xiàn)

每周定時備份,即在一周中選擇固定一天的某個時間,自動執(zhí)行作業(yè)將數(shù)據(jù)庫信息備份到用戶選定的目錄下,備份目錄的選擇和每天備份類似。實現(xiàn)時,首先從頁面得到存儲路徑path、每周備份方式type和備份的具體時間等詳細(xì)信息,然后調(diào)用weekback()等功能函數(shù)完成。在用戶確認(rèn)各項備份信息后,就成功地設(shè)置了一個每周備份的新作業(yè),進行每周備份的關(guān)鍵代碼如下[2,5,6]

private SQLDMO.Job oJob = 1;//創(chuàng)建一個作業(yè)實例

oJob = new SQLDMO.JobClass();

.……..

oJob = server.JobServer.Jobs.Item(\"Backup_DbCida\")//;得到周備份詳細(xì)信息

SQLDMO.JobSchedule schedule = oJob.JobSchedules.Item(\"backup\");

week = schedule.Schedule.FrequencyInterval.ToString();//得到備份信息是星期幾

string retStr = schedule.Schedule.ActiveStartTimeOfDay.ToString();//得到備份時間

schedule.Schedule.ActiveStartDate = int.Parse(starttime);//定時備份開始時間

………..

backup.JobStep(type,\"DbCida\");//根據(jù)類型新建作業(yè)

backup.WeekBack(hour,minute,second,starttime,backweek);//進行每周備份

3.3.3 每月定時備份的實現(xiàn)

每月定時備份就是在一月中選擇固定的一天的某個時刻,系統(tǒng)自動將數(shù)據(jù)庫信息備份到用戶選定的路徑下,備份目錄的選擇與每天備份時類似。在實現(xiàn)時,從頁面得到存儲路徑、每月備份方式、備份具體時間等詳細(xì)信息,然后調(diào)用BLL層的monthback()等函數(shù)來完成該功能。進行每月備份的主要代碼如下[2,5,6]

oJob = server.JobServer.Jobs.Item(\"Backup_DbCida\");//得到月備份詳細(xì)信息

string date1 = schedule.Schedule.FrequencyInterval.ToString();//得到備份具體日期

string retStr = schedule.Schedule.ActiveStartTimeOfDay.ToString();//得到備份時間

……………

SQLDMO.JobSchedule schedule = new SQLDMO.JobScheduleClass();

schedule.Name = \"backup\";//調(diào)度任務(wù)名稱

schedule.Schedule.ActiveStartDate = int.Parse(starttime);//定時備份開始時間

………..

backup.JobStep(type,\"DbCida\");//根據(jù)類型新建作業(yè)

backup.MonthBack(hour,minute,second,starttime,backdate);

在確認(rèn)備份信息后,就可以成功設(shè)置一個每月備份的新作業(yè),當(dāng)然用戶也可以隨時根據(jù)具體情況的變化更改自己的自動備份設(shè)置。需要注意的是,在進行自動備份時,用戶一定要保證選擇存放備份文件的目錄必須有足夠的空間;另外,數(shù)據(jù)庫服務(wù)器上的SQL Server代理也必須設(shè)置為自動隨機啟動,否則設(shè)定的自動定時備份作業(yè)將不被執(zhí)行。[LL]

3.4 停用自動備份

當(dāng)用戶決定不需要使用定時自動備份功能時,可以選擇圖2中的“停止定時備份”單選按鈕來完成相應(yīng)功能,如圖3所示:

圖3 停止自動定時備份

實現(xiàn)的主要代碼如下[5,6]

…

backup.RemoveJob();//根據(jù)作業(yè)名刪除所有作業(yè)

4 結(jié) 語 

在目前Internet非常普及而網(wǎng)絡(luò)又不太安全的環(huán)境下,加強數(shù)據(jù)庫的備份功能有著十分重要的現(xiàn)實意義。本文中,我們應(yīng)用SQLDMO組件在ASP.NET環(huán)境下編程實現(xiàn)了數(shù)據(jù)庫備份功能的自動化,方便了用戶操作;同時,也為應(yīng)用程序客戶端實現(xiàn)數(shù)據(jù)庫維護自動化提供了一個解決方法,具有一定的實用價值。接下來,將繼續(xù)實現(xiàn)數(shù)據(jù)庫的差異備份和事務(wù)日志備份等功能,進一步完善數(shù)據(jù)庫管理功能。

參 考 文 獻

[1]鄧健青,石崗.應(yīng)用程序中數(shù)據(jù)庫備份與恢復(fù)的實現(xiàn)[J].計算機應(yīng)用研究,2004(5):143144.

[2]王德剛,潘新,王德強,等.通過ASP實現(xiàn)SQL數(shù)據(jù)庫的遠(yuǎn)程備份和恢復(fù)[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報,2005,26(3):8386.

[3]鄭阿奇.SQL Server 2000 數(shù)據(jù)庫實時備份[J].計算機工程與設(shè)計,2006,27(1):126128.

[4]王西鋒,張曉孿,李乃乾.基于SQLDMO的數(shù)據(jù)庫備份和恢復(fù)的設(shè)計與實現(xiàn)[J].陜西理工學(xué)院學(xué)報,2007,23(3):4650.

[5]Microsoft SQL Server Books Online[Z].http://msdn2.microsoft.com/zhcn/library/ms131955.aspx,2005.

[6]李萬寶.ASP.NET技術(shù)詳解與應(yīng)用實例[M].北京:機械工業(yè)出版社,2005.

作者簡介 王西鋒 男,1978年出生,漢族,陜西渭南人,講師,碩士。主要從事計算機網(wǎng)絡(luò)應(yīng)用技術(shù)的研究。

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

主站蜘蛛池模板: 久久激情影院| 国产精品永久在线| 在线色国产| 国内精自视频品线一二区| 日韩久久精品无码aV| 黑人巨大精品欧美一区二区区| 亚洲成人网在线播放| 欧美在线视频a| 日本免费精品| 欧美国产日韩一区二区三区精品影视 | 国内精品自在自线视频香蕉| 国产精品观看视频免费完整版| 中国毛片网| 国产成本人片免费a∨短片| 午夜精品影院| 国产一级二级在线观看| 日韩在线播放中文字幕| 激情乱人伦| 日韩精品免费在线视频| 在线观看精品自拍视频| 成人免费午间影院在线观看| 国产资源免费观看| 亚洲国产精品日韩av专区| Aⅴ无码专区在线观看| 久久久久免费精品国产| 黄色网页在线观看| 午夜激情婷婷| 国产精品成人久久| 国产经典免费播放视频| 色偷偷一区| 国产精品专区第1页| 国产精品香蕉| 青青青国产免费线在| 国产午夜一级毛片| 国产第一页免费浮力影院| 青草精品视频| 日韩精品一区二区深田咏美| 2018日日摸夜夜添狠狠躁| 好紧太爽了视频免费无码| 国产欧美成人不卡视频| 欧美精品v| 久久一本日韩精品中文字幕屁孩| 日韩在线观看网站| 欧美伦理一区| 国产成人综合在线观看| 成人欧美在线观看| 毛片最新网址| 国产激爽大片高清在线观看| 青青草久久伊人| 色窝窝免费一区二区三区| 久久国产精品影院| 免费国产好深啊好涨好硬视频| 91麻豆精品国产高清在线| 露脸国产精品自产在线播| 国产精品一区在线观看你懂的| 欧美天堂在线| 伊人91在线| 亚洲国产中文精品va在线播放| 福利片91| 在线观看精品自拍视频| 久久精品人人做人人爽| 免费高清a毛片| 亚洲国产精品一区二区高清无码久久| 日本国产一区在线观看| 亚洲男人天堂2020| 亚洲日韩日本中文在线| 91精品国产一区自在线拍| 欧美三级视频网站| 91精品啪在线观看国产91| 亚洲精品中文字幕无乱码| 色亚洲成人| 日本一区高清| 无码 在线 在线| 国产精品入口麻豆| 欧美国产日产一区二区| 久久精品中文字幕免费| 亚洲无码电影| 色婷婷综合在线| 91av成人日本不卡三区| 亚洲色图欧美| 久久综合色播五月男人的天堂| 久久黄色小视频|