Username: Password:

Net下的数据备份和还原-.NET教程,数据库应用
来源:作者: 发布时间:2007-12-26 02:05:11

数据库:sql server ;引用sqldmo
◆数据备份 :
///
/// 备份数据库
///

private void btnbackup_click(object sender, system.eventargs e)
{
this.cursor = cursors.waitcursor;
this.label1.text = " 正在进行档案库的数据备份,这可能需要几秒到几十的时间,请稍候...";
this.label1.visible = true;
this.label1.refresh();
this.pbar1.visible = true;
//------------------------------------------------------------------------------------


string selfname = “d:\northwindbak“;
string devicename = “northwindbak“;
string remark = "备份测试";

//◆数据备份:
sqldmo.backup obackup = new sqldmo.backupclass();
sqldmo.sqlserver osqlserver = new sqldmo.sqlserverclass();
obackup.action = 0 ;
obackup.initialize = true ;
sqldmo.backupsink_percentcompleteeventhandler pceh = new sqldmo.backupsink_percentcompleteeventhandler(step);
obackup.percentcomplete += pceh;

try
{
osqlserver.loginsecure = false;
osqlserver.connect(common.mysettings.sqlservername, "sa", "");
obackup.action = sqldmo.sqldmo_backup_type.sqldmobackup_database;
obackup.database = "northwind";//数据库名
obackup.files = selfname;//文档路径
obackup.backupsetname = devicename;//备份名称
obackup.backupsetdescription = remark;//备份描述
obackup.initialize = true;
obackup.sqlbackup(osqlserver);

}
catch(system.exception ex)
{
common.showmsg("数据备份失败:\n" + ex.tostring());
}
finally
{
osqlserver.disconnect();
}

//------------------------------------------------------------------------------------
this.label1.visible = false;
this.pbar1.visible = false;
this.cursor = cursors.default;
}


///
/// 显示备份进度条
///

private void step(string message,int percent)
{
this.pbar1.value = percent ;
}

◆数据还原 :
///
/// 还原数据库
///

private void btnrestore_click(object sender, system.eventargs e)
{

this.cursor = cursors.waitcursor;
this.label1.text = " 正在进行档案库的数据还原,这可能需要几秒到几十的时间,请稍候...";
this.label1.visible = true;
this.label1.refresh();
this.pbar1.visible = true;
//------------------------------------------------------------------------------------

string filename = "northwindbak";
string filepath = "d:\northwindbak";
string remark = "备份测试";

sqldmo.restore orestore = new sqldmo.restoreclass();
sqldmo.sqlserver osqlserver = new sqldmo.sqlserverclass();
orestore.action = 0 ;
sqldmo.restoresink_percentcompleteeventhandler pceh = new sqldmo.restoresink_percentcompleteeventhandler(step);
orestore.percentcomplete += pceh;
try
{
osqlserver.connect(common.mysettings.sqlservername, "sa", "");
sqldmo.queryresults qr = osqlserver.enumprocesses(-1) ;
int icolpidnum = -1 ;
int icoldbname = -1 ;

//杀死其他的连接进程
for(int i=1;i<=qr.columns;i++)
{
string strname = qr.get_columnname(i) ;
if (strname.toupper().trim() == "spid")
{
icolpidnum = i ;
}
else if (strname.toupper().trim() == "dbname")
{
icoldbname = i ;
}
if (icolpidnum != -1 && icoldbname != -1)
break ;
}

for(int i=1;i<=qr.rows;i++)
{
int lpid = qr.getcolumnlong(i,icolpidnum) ;
string strdbname = qr.getcolumnstring(i,icoldbname) ;
if (strdbname.toupper() == "cgrecord".toupper())
osqlserver.killprocess(lpid) ;
}


orestore.action = sqldmo.sqldmo_restore_type.sqldmorestore_database;
orestore.database = "northwind";
orestore.files = filepath;
orestore.filenumber = 1;
orestore.replacedatabase = true;
orestore.sqlrestore(osqlserver);


}
catch(system.exception ex)
{
common.showmsg("数据还原失败:\n" + ex.tostring());
}
finally
{
osqlserver.disconnect();
}

//------------------------------------------------------------------------------------
this.label1.visible = false;
this.pbar1.visible = false;
this.cursor = cursors.default;
}

///
/// 显示还原进度条
///

private void step(string message,int percent)
{
this.pbar1.value = percent ;
}


喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅