当前位置:首页 > 数据库 > Sqlserver

mvc项目中实现备份数据库(sqlserver2005)

<summary> /// 数据库维护 /// </summary> public class DatabaseMaintenance { /// <summary> /// 备份数据库 /// </summary> /// <param name="fileName">备份文件的路径</param> public static void Backup(string fileName) { //TODO SQL Server only now string sqlConnectionString = ConfigurationManager.ConnectionStrings["HelpStoreContext"].ToString(); using (SqlConnection conn = new SqlConnection(sqlConnectionString)) { string dbName = new SqlConnectionStringBuilder(sqlConnectionString).InitialCatalog; string commandText = string.Format( "BACKUP DATABASE [{0}] TO DISK = ‘{1}‘ WITH FORMAT", dbName, fileName); DbCommand dbCommand = new SqlCommand(commandText, conn); if (conn.State != ConnectionState.Open) conn.Open(); dbCommand.ExecuteNonQuery(); } } /// <summary> /// 还原数据库 database /// </summary> /// <param name="fileName">要还原的数据库文件路径</param> public static void RestoreBackup(string fileName) { string sqlConnectionString = ConfigurationManager.AppSettings["HelpStoreContext"]; using (SqlConnection conn = new SqlConnection(sqlConnectionString)) { string dbName = new SqlConnectionStringBuilder(sqlConnectionString).InitialCatalog; string commandText = string.Format( "DECLARE @ErrorMessage NVARCHAR(4000)n" + "ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATEn" + "BEGIN TRYn" + "RESTORE DATABASE [{0}] FROM DISK = ‘{1}‘ WITH REPLACEn" + "END TRYn" + "BEGIN CATCHn" + "SET @ErrorMessage = ERROR_MESSAGE()n" + "END CATCHn" + "ALTER DATABASE [{0}] SET MULTI_USER WITH ROLLBACK IMMEDIATEn" + "IF (@ErrorMessage is not NULL)n" + "BEGINn" + "RAISERROR (@ErrorMessage, 16, 1)n" + "END", dbName, fileName); DbCommand dbCommand = new SqlCommand(commandText, conn); if (conn.State != ConnectionState.Open) conn.Open(); dbCommand.ExecuteNonQuery(); } //clear all pools SqlConnection.ClearAllPools(); } }

2、在控制器里调用方法

       //备份数据库  
       public string BackupData()  
       {  
           try  
           {  
               var dname = DateTime.Now.Ticks;  
               string filename = Server.MapPath("~/Data/" + dname + ".bak");  
               if (!System.IO.File.Exists(filename))  
               {  
                   System.IO.File.Create(filename);  
               }  
               DatabaseMaintenance.Backup(filename);  
               return "备份成功";  
           }  
           catch  
           {  
               return "备份失败";  
           }  
       }  

3、删除已经备份的数据库bak文件

      //删除数据库备份文件  
       public string DelDataBase(string id)  
       {  
           try  
           {  
               string filepath=Server.MapPath("~/Data/"+id);  
               System.IO.File.Delete(filepath);  
               return "删除成功";  
           }  
           catch {  
               return "删除失败";  
           }  
       }  

 

mvc项目中实现备份数据库(sqlserver2005)

标签:

本文系统来源:http://www.cnblogs.com/sky-net/p/4609947.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐