myssh

   declare   @strsql   varchar(1000),     --执行语句  
                  @strdirname   varchar(50),--建立文件夹名  
                  @strcmd   varchar(50),         --执行命令名  
                  @strsend   varchar(1000),   --邮件发送语句  
                  @strdate   varchar(50)         --邮件发送日期  
  set   @strsql=\'backup   database   pubs   to   disk=\'\'d:\backup\erp\\'    
  set   @strdirname=replace(substring(convert(varchar(20),getdate(),120),1,10),\'-\',\'\')  
  set   @strcmd=\'md   d:\backup\erp\\'  
  set   @strcmd=@strcmd+@strdirname  
  --取得当天日期,格式为yyyy-mm-dd  
  set   @strdate=substring(convert(varchar(50),getdate(),120),1,10)  
  set   @strsend=\'sys_sendmail   \'\'1000@hm.com\'\',\'\'213@hm.com\'\',\'\'www\'\',\'\'备份通知\'\',\'\'\'+@strdate+\'日数据库备份成功,感谢您的使用!\'\'\'  
  exec   xp_cmdshell   @strcmd  
  set   @strsql=@strsql+@strdirname+\'\pubs.dat\'\'with   init,nounload,noskip,noformat\'  
  print   @strsql  
  exec   (@strsql)  
  backup   database   pubs   to   disk=\'d:\backup\erp\pubs.dat\'   with   init,nounload,noskip,noformat  
  --用FTP上传到ERP服务器  
  exec   xp_cmdshell   \'ftp   -s:"D:\backup\erp\ftp.txt"\'  
  --操作成功后发送邮件  
  exec(@strsend)  
  if   @@error   <>   0  
  begin  
  raiserror(\'数据库备份发生错误,请检查设置\',16,1)  
  set   @strsend=\'sys_sendmail   \'\'1000@hm.com\'\',\'\'213@hm.com\'\',\'\'www\'\',\'\'备份通知\'\',\'\'\'+@strdate+\'日数据库备份失败,请检查设置!\'\'\'  
  exec   (@strsend)  
  end

-----------------------------------------------------------------------------------------------------------

下面还有个使用C#来实现备份的

///<summary>
      
///备份数据库到本地磁盘
      
///</summary>
    
public bool BackUp(string BackUpFile)
    {
        try
        {
          
//第一步:在服务器上创建临时文件夹
          ExecuteSql(@"master..xp_cmdshell 
\'md C:\temp\'");
          ExecuteSql(@"master..xp_cmdshell 
\'del C:\temp\*.* /q\'");
          
//第二步:备份数据库到服务器目录
          ExecuteSql(@"
backup database " + DataBaseName() + @" to disk=\'C:\temp\HSSY\'");
          
//第三步:共享服务器的备份目录
          ExecuteSql(@"master..xp_cmdshell 
\'net share SQLDATABACK=C:\temp\'");
          
//第四步:复制服务器上的备份文件到本地
          
File.Copy(@"\\" + ServerIP() + @"\SQLDATABACK\HSSY", BackUpFile,true);
          
          
return true;
        }
        catch (System.Data.SqlClient.SqlException E)
        {
          throw new Exception(E.Message);
        }
        finally
        {
          
//第五步:取消服务器共享目录的共享
          ExecuteSql(@"master..xp_cmdshell 
\'net share SQLDATABACK /delete\'");
        }
    }

    
/// <summary>
    
/// 从本地磁盘恢复数据库
    
/// </summary>
    
public bool Restore(string RestoreFile)
    {
        try
        {
          
//第零步:关闭用户进程,防止其它用户正在使用数据库,导致数据恢复失败
          KillServerUser();
          
//第一步:在服务器上创建临时文件夹
          ExecuteSql(@"master..xp_cmdshell 
\'md C:\temp\'");
          ExecuteSql(@"master..xp_cmdshell 
\'del C:\temp\*.* /q\'");
          
//第二步:共享服务器的恢复目录
          ExecuteSql(@"master..xp_cmdshell 
\'net share SQLRESTORE=C:\temp\'");
          
//第三步:复制服务器上的备份文件到本地
          
File.Copy(RestoreFile, @"\\" + ServerIP() + @"\SQLRESTORE\HSSY",true);
          
//第四步:取消服务器共享目录的共享
          ExecuteSql(@"master..xp_cmdshell 
\'net share SQLDATABACK /delete\'");
          
//第五步:恢复数据库到服务器目录
          ExecuteSql(@"
restore database " + DataBaseName()+ @" from disk=\'C:\temp\HSSY\'");
          
return true;
        }
        catch (System.Data.SqlClient.SqlException E)
        {
          throw new Exception(E.Message);
        }
        finally
        {
          
//第六步:取消服务器共享目录的共享
          
//DbHelperSQL.ExecuteSql(@"master..xp_cmdshell \'net share SQLDATABACK /delete\'");
        }
    }

分类:

技术点:

相关文章:

  • 2021-06-30
  • 2021-08-31
  • 2021-11-29
  • 2022-02-15
  • 2022-01-06
  • 2021-06-18
  • 2022-03-07
猜你喜欢
  • 2021-09-01
  • 2022-02-26
  • 2022-01-04
  • 2022-12-23
  • 2022-12-23
  • 2022-02-17
  • 2022-12-23
相关资源
相似解决方案