C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

【转】  http://hi.baidu.com/zzj05142129/blog/item/6f50f53ef1d02ec47c1e7140.html

 

 

当不使用要恢复的数据库时以上方法可行,但当你使用了数据库时就必须杀死该进程  
代码如下:  
   
///   <summary>  
///   还原数据库函数  
///   </summary>  
///   <param   name="strDbName">数据库名</param>  
///   <param   name="strFileName">数据库备份文件的完整路径名</param>  
///   <returns></returns>  
public   bool   RestoreDB(string   strDbName,string   strFileName)    
{    
//PBar   =   pgbMain   ;    
SQLDMO.SQLServer   svr   =   new   SQLDMO.SQLServerClass()   ;    
try    
{    
//服务器名,数据库用户名,数据库用户名密码  
svr.Connect("localhost","sa","hai")   ;  
   
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   ;    
}    
                                  //杀死使用strDbName数据库的进程  
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   ;    
res.Files   =   strFileName   ;    
   
res.Database   =   strDbName   ;    
res.ReplaceDatabase   =   true   ;    
res.SQLRestore(svr)   ;    
return   true   ;    
}    
catch  
{    
return   false;  
}    
finally    
{    
svr.DisConnect()   ;    
}    
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值