程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> asp.net 備份和恢復數據庫的方法

asp.net 備份和恢復數據庫的方法

編輯:關於ASP.NET

     這篇文章主要介紹了asp.net 備份和恢復數據庫的方法示例,需要的朋友可以參考下

       代碼如下: /**********************************************************************************    *  * 功能說明:備份和恢復SQL Server數據庫  * 作者: 劉功勳;  * 版本:V0.1(C#2.0);  * 當使用SQL Server時,請引用 COM組件中的,SQLDMO.dll組件  * 當使用Access中,請浏覽添加引用以下兩個dll  *          引用C:Program FilesCommon FilesSystemadomsadox.dll,該DLL包含ADOX命名空間  *          引用C:Program FilesCommon FilesSystemadomsjro.dll,該DLL包含JRO命名空間  * *******************************************************************************/ using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; using ADOX;//該命名空間包含創建ACCESS的類(方法)--解決方案 ==> 引用 ==> 添加引用 ==> 游覽找到.dll using JRO;//該命名空間包含壓縮ACCESS的類(方法)   namespace EC {     /// <summary>     /// 數據庫恢復和備份     /// </summary>     public class SqlBackObject     {         public SqlBackObject()         {             //             // TODO: 在此處添加構造函數邏輯             //         }           #region SQL數據庫備份        /// <summary>         /// SQL數據庫備份        /// </summary>        /// <param name="ServerIP">SQL服務器IP或(Localhost)</param>        /// <param name="LoginName">數據庫登錄名</param>        /// <param name="LoginPass">數據庫登錄密碼</param>        /// <param name="DBName">數據庫名</param>        /// <param name="BackPath">備份到的路徑</param>         public static void SQLBACK(string ServerIP,string LoginName,string LoginPass,string DBName,string BackPath)         {             SQLDMO.Backup oBackup = new SQLDMO.BackupClass();             SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();             try             {                 oSQLServer.LoginSecure = false;                 oSQLServer.Connect(ServerIP, LoginName, LoginPass);                 oBackup.Database = DBName;                 oBackup.Files = BackPath;                 oBackup.BackupSetName = DBName;                 oBackup.BackupSetDescription = "數據庫備份";                 oBackup.Initialize = true;                 oBackup.SQLBackup(oSQLServer);               }             catch (Exception e)             {                 throw new Exception(e.ToString());             }             finally             {                 oSQLServer.DisConnect();             }         }         #endregion           #region SQL恢復數據庫         /// <summary>         /// SQL恢復數據庫         /// </summary>         /// <param name="ServerIP">SQL服務器IP或(Localhost)</param>         /// <param name="LoginName">數據庫登錄名</param>         /// <param name="LoginPass">數據庫登錄密碼</param>         /// <param name="DBName">要還原的數據庫名</param>         /// <param name="BackPath">數據庫備份的路徑</param>           public static void SQLDbRestore(string ServerIP,string LoginName,string LoginPass,string DBName,string BackPath)         {               SQLDMO.Restore orestore = new SQLDMO.RestoreClass();             SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();             try             {                 oSQLServer.LoginSecure = false;                 oSQLServer.Connect(ServerIP, LoginName, LoginPass);                 orestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;                 orestore.Database = DBName;                 orestore.Files = BackPath;                 orestore.FileNumber = 1;                 orestore.ReplaceDatabase = true;                 orestore.SQLRestore(oSQLServer);               }             catch (Exception e)             {                 throw new Exception(e.ToString());             }             finally             {                 oSQLServer.DisConnect();             }         }             #endregion           #region 根據指定的文件名稱創建Access數據庫         /// <summary>         /// 根據指定的文件名稱創建數據         /// </summary>         /// <param name="DBPath">絕對路徑+文件名稱</param>         public static void CreateAccess(string DBPath)         {             if (File.Exists(DBPath))//檢查數據庫是否已存在             {                 throw new Exception("目標數據庫已存在,無法創建");             }                       DBPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DBPath;             //創建一個CatalogClass對象實例             ADOX.CatalogClass cat = new ADOX.CatalogClass();             //使用CatalogClass對象的Create方法創建ACCESS數據庫             cat.Create(DBPath);           }         #endregion           #region 壓縮Access數據庫         /// <summary>         /// 壓縮Access數據庫         /// </summary>         /// <param name="DBPath">數據庫絕對路徑</param>         public static void CompactAccess(string DBPath)         {             if (!File.Exists(DBPath))             {                 throw new Exception("目標數據庫不存在,無法壓縮");             }               //聲明臨時數據庫名稱             string temp = DateTime.Now.Year.ToString();             temp += DateTime.Now.Month.ToString();             temp += DateTime.Now.Day.ToString();             temp += DateTime.Now.Hour.ToString();             temp += DateTime.Now.Minute.ToString();             temp += DateTime.Now.Second.ToString() + ".bak";             temp = DBPath.Substring(0, DBPath.LastIndexOf("") + 1) + temp;             //定義臨時數據庫的連接字符串             string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+temp;             //定義目標數據庫的連接字符串             string DBPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DBPath;             //創建一個JetEngineClass對象的實例             JRO.JetEngineClass jt = new JRO.JetEngineClass();             //使用JetEngineClass對象的CompactDatabase方法壓縮修復數據庫             jt.CompactDatabase(DBPath2, temp2);             //拷貝臨時數據庫到目標數據庫(覆蓋)             File.Copy(temp, DBPath, true);             //最後刪除臨時數據庫             File.Delete(temp);         }         #endregion           #region 備份Access數據庫         /// <summary>         /// 備份Access數據庫         /// </summary>         /// <param name="srcPath">要備份的數據庫絕對路徑</param>         /// <param name="aimPath">備份到的數據庫絕對路徑</param>         /// <returns></returns>         public static void Backup(string srcPath,string aimPath)         {               if (!File.Exists(srcPath))             {                 throw new Exception("源數據庫不存在,無法備份");             }             try             {                 File.Copy(srcPath,aimPath,true);             }             catch(IOException ixp)             {                 throw new Exception(ixp.ToString());             }           }           #endregion           #region 還原Access數據庫         /// <summary>         /// 還原Access數據庫         /// </summary>         /// <param name="bakPath">備份的數據庫絕對路徑</param>         /// <param name="dbPath">要還原的數據庫絕對路徑</param>         public static void RecoverAccess(string bakPath,string dbPath)         {                       if (!File.Exists(bakPath))             {                 throw new Exception("備份數據庫不存在,無法還原");             }             try             {                 File.Copy(bakPath, dbPath, true);             }             catch (IOException ixp)             {                 throw new Exception(ixp.ToString());             }                }                #endregion     } }  
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved