Asp.net 备份、还原Ms SQLServer及压缩Access数据库

/############################################ 版权声明: 文章内容为本站编辑,创作.你可以任意转载、发布、使用但请务必以明文标注文章原始出处及本声明 http://www.opent.cn  作者:浪淘沙 ############################################/

 

/**********************************************************************************  *  * 功能说明:备份和恢复SQL Server数据库  * 作者: 刘功勋;  * 版本:V0.1(C#2.0);时间:2007-1-1  * 当使用SQL Server时,请引用 COM组件中的,SQLDMO.dll组件  * 当使用Access中,请浏览添加引用以下两个dll  *          引用C:/Program Files/Common Files/System/ado/msadox.dll,该DLL包含ADOX命名空间  *          引用C:/Program Files/Common Files/System/ado/msjro.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     } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值