public bool RestoreDB(string strDbName,string strFileName/*,ProgressBar pgbMain*/)
{
//PBar = pgbMain ;
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
try
{
svr.Connect("(local)", "sa", "sa");
SQLDMO.QueryResults qr = svr.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() == strDbName.ToUpper())
svr.KillProcess(lPID);
} SQLDMO.Restore res = new SQLDMO.RestoreClass();
res.Action = 0;
//SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
//res.PercentComplete += pceh;
res.Files = strFileName;
res.Database = strDbName;
res.ReplaceDatabase = true;
res.SQLRestore(svr);
return true ;
}
catch(Exception err)
{
throw(new Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message));
}
finally
{
svr.DisConnect() ;
}
} private void renewmenuItemBtn_Click(object sender, System.EventArgs e)
{
string strPath = "";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strPath = openFileDialog1.FileName.Replace(" ",@"\0");
if (RestoreDB("PersonalAffair",strPath))
{
MessageBox.Show("成功恢复数据!");
//datagrid绑定数据
}
}
在成功恢复后 绑定数据时 会有错误提示:常规网络错误。请检查您的网络文档。
{
//PBar = pgbMain ;
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
try
{
svr.Connect("(local)", "sa", "sa");
SQLDMO.QueryResults qr = svr.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() == strDbName.ToUpper())
svr.KillProcess(lPID);
} SQLDMO.Restore res = new SQLDMO.RestoreClass();
res.Action = 0;
//SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
//res.PercentComplete += pceh;
res.Files = strFileName;
res.Database = strDbName;
res.ReplaceDatabase = true;
res.SQLRestore(svr);
return true ;
}
catch(Exception err)
{
throw(new Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message));
}
finally
{
svr.DisConnect() ;
}
} private void renewmenuItemBtn_Click(object sender, System.EventArgs e)
{
string strPath = "";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strPath = openFileDialog1.FileName.Replace(" ",@"\0");
if (RestoreDB("PersonalAffair",strPath))
{
MessageBox.Show("成功恢复数据!");
//datagrid绑定数据
}
}
在成功恢复后 绑定数据时 会有错误提示:常规网络错误。请检查您的网络文档。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货