关于数据库备份与还原的不明白的地方~
小弟程序中要实现备份与还原,网上找了很多,一个代码我不明白,老报错
SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
这个Step是个啥呢?
这个Step是个啥呢?
这个Step是个啥呢?
这个Step是个啥呢?
这个Step是个啥呢?
这个Step是个啥呢?
全代码如下:
/// <summary>
/// 恢复
/// </summary>
/// <param name="strDbName">备份文件名</param>
/// <param name="strFileName">状态条控件名称</param>
/// <param name="strServerName">服务器名称</param>
/// <param name="strUserName">用户名称</param>
/// <param name="strPwd">密码</param>
/// <returns>恢复成功返回true ,否则返回false</returns>
public bool RestoreDB(string strDbName,string strFileName,string strServerName,string strUserName,string strPwd )
{
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ;
try
{
ServerName = strServerName ;
UserName = strUserName ;
Password = strPwd ;
svr.Connect(ServerName,UserName,Password) ;
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)
{
message = "恢复数据库失败,请关闭所有和该数据库连接的程序!" +err.Message;
return false;
}
finally
{
svr.DisConnect() ;
}
}