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绑定数据
}
}
在成功恢复后 绑定数据时 会有错误提示:常规网络错误。请检查您的网络文档。