數據庫:sql server ;引用sqldmo
◆數據備份 :
/// <summary>
/// 備份數據庫
/// </summary>
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;
}
/// <summary>
/// 顯示備份進度條
/// </summary>
private void step(string message,int percent)
{
this.pbar1.value = percent ;
}
◆數據還原 :
/// <summary>
/// 還原數據庫
/// </summary>
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() == "northwind".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;
}
/// <summary>
/// 顯示還原進度條
/// </summary>
private void step(string message,int percent)
{
this.pbar1.value = percent ;
}
新聞熱點
疑難解答
圖片精選