zoukankan      html  css  js  c++  java
  • mvc项目中实现备份数据库(sqlserver2005)

    功能要求:mvc项目,实现数据库备份(bak文件)

    实现步骤:<a id="backupDB" href="javascript:" >数据库备份</a>

    方法:1、新建类DatabaseMaintenance

        /// <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)
    " +  
                        "ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    " +  
                        "BEGIN TRY
    " +  
                            "RESTORE DATABASE [{0}] FROM DISK = '{1}' WITH REPLACE
    " +  
                        "END TRY
    " +  
                        "BEGIN CATCH
    " +  
                            "SET @ErrorMessage = ERROR_MESSAGE()
    " +  
                        "END CATCH
    " +  
                        "ALTER DATABASE [{0}] SET MULTI_USER WITH ROLLBACK IMMEDIATE
    " +  
                        "IF (@ErrorMessage is not NULL)
    " +  
                        "BEGIN
    " +  
                            "RAISERROR (@ErrorMessage, 16, 1)
    " +  
                        "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 "删除失败";  
               }  
           }  
    
  • 相关阅读:
    编码器的集电极输出、电压输出、互补输出和线性驱动输出
    2、控制系统的工程规划
    组件的注册
    脉冲和PWM波的区别和比较
    1、计算机控制系统概述
    Javaweb之国际化
    Javaweb之文件的上传与下载
    Servlet监听器
    Filter(过滤器)(有待补充)
    Javabean及其在jsp中的应用
  • 原文地址:https://www.cnblogs.com/sky-net/p/4609947.html
Copyright © 2011-2022 走看看